{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "73bd968b-d970-4a05-94ef-4e7abf990827",
   "metadata": {},
   "source": [
    "Chapter 02\n",
    "\n",
    "# 矩阵逆\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7cb13198-40d8-4284-9c7e-492ee4b9f94a",
   "metadata": {},
   "source": [
    "该代码使用`numpy`生成一个随机的方阵$A$，计算其逆矩阵$A^{-1}$，并通过热图展示$A$、$A^{-1}$和它们的乘积$A @ A^{-1}$。在矩阵运算中，方阵$A$的逆矩阵$A^{-1}$具有这样的性质，即与$A$相乘时，结果是单位矩阵$I$，该矩阵的对角线元素为$1$，其他元素为$0$。单位矩阵$I$在矩阵乘法中起到类似于数值中的$1$的作用，是一种保持矩阵本身性质的单位元素。\n",
    "\n",
    "### 代码细节\n",
    "\n",
    "1. **生成随机方阵$A$**：生成一个$n \\times n$的矩阵$A$，其元素在$[-1.5, 1.5]$范围内均匀分布，矩阵的维度$n$为$4$，矩阵结构为：\n",
    "\n",
    "   $$\n",
    "   A = \\begin{bmatrix} a_{11} & a_{12} & a_{13} & a_{14} \\\\ a_{21} & a_{22} & a_{23} & a_{24} \\\\ a_{31} & a_{32} & a_{33} & a_{34} \\\\ a_{41} & a_{42} & a_{43} & a_{44} \\end{bmatrix}\n",
    "   $$\n",
    "\n",
    "2. **计算逆矩阵$A^{-1}$**：通过`numpy.linalg.inv`函数计算$A$的逆矩阵$A^{-1}$。逆矩阵定义满足：\n",
    "\n",
    "   $$\n",
    "   A @ A^{-1} = I\n",
    "   $$\n",
    "\n",
    "   其中$I$为单位矩阵：\n",
    "\n",
    "   $$\n",
    "   I = \\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1 \\end{bmatrix}\n",
    "   $$\n",
    "\n",
    "3. **可视化矩阵乘积结果**：\n",
    "   - 使用热图分别显示矩阵$A$、$A^{-1}$，以颜色区分元素值的大小。\n",
    "   - 显示矩阵$A @ A^{-1}$的结果。理论上，该结果应为单位矩阵$I$，表示矩阵乘法中的逆运算的效果，即使矩阵在其逆矩阵作用下恢复为单位矩阵。\n",
    "\n",
    "### 总结\n",
    "\n",
    "通过生成随机矩阵$A$并计算其逆矩阵$A^{-1}$，该代码直观地展示了矩阵与其逆矩阵相乘等于单位矩阵$I$的特性。这种逆运算在矩阵代数中起到关键作用，广泛应用于求解线性方程组和线性变换等问题。可视化图像强化了对矩阵逆概念的理解。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ab4fb762-e4cf-4828-a9ee-b99b85d2fce2",
   "metadata": {},
   "source": [
    "## 生成矩阵及其逆矩阵并可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1eefb2cd-d279-4374-8302-7cadb6813fc2",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from numpy.linalg import inv\n",
    "from matplotlib import pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "np.random.seed(0)  # 设置随机种子以确保结果可重复"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b1e79495-61bc-47a3-9ae7-4cbbd389ac57",
   "metadata": {},
   "source": [
    "## 生成矩阵A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b08b3951-ab82-4ea0-bd9b-dc8829fc23e9",
   "metadata": {},
   "outputs": [],
   "source": [
    "n = 4  # 定义矩阵的维度\n",
    "A = np.random.uniform(-1.5, 1.5, n * n).reshape(n, n)  # 随机生成矩阵A\n",
    "\n",
    "all_max = 1.5  # 热图的最大显示值\n",
    "all_min = -1.5  # 热图的最小显示值"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "823aabca-91cb-4d4e-8434-679e421e06b0",
   "metadata": {},
   "source": [
    "## 计算矩阵A的逆矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4a22eaad-b33d-4194-a4b5-1e9b830c4af3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.52654561,  0.37420356,  0.78419842,  0.35272341],\n",
       "       [ 1.10698254,  0.05913398, -0.13135024,  0.16725973],\n",
       "       [ 1.30950774, -0.65018168, -0.1734876 , -0.48674236],\n",
       "       [-0.30622691,  0.79815359,  0.17409359, -0.07109326]])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A_inverse = inv(A)  # 计算A的逆矩阵\n",
    "A_inverse"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9b45a0de-f2a0-4ca6-92db-d4951febfd4c",
   "metadata": {},
   "source": [
    "## 可视化矩阵A、逆矩阵、乘积"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e28a2c38-a89f-4473-83c3-1c538fa48e9c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([0.5, 1.5, 2.5, 3.5]),\n",
       " [Text(0, 0.5, '1'), Text(0, 1.5, '2'), Text(0, 2.5, '3'), Text(0, 3.5, '4')])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA8gAAAESCAYAAAAhaPxiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACFEUlEQVR4nOzdZ3RUVReA4XfSe++VkFASIKF3pUpHOiiIgGChCIpKFRRBugWlKtJL6E2aIAKitNB77wTSe5sk8/0ITDJkkswEMMC3n7VmQU72ubPvHThn9q0KlUqlQgghhBBCCCGE+D9nUNIJCCGEEEIIIYQQLwIpkIUQQgghhBBCCKRAFkIIIYQQQgghACmQhRBCCCGEEEIIQApkIYQQQgghhBACkAJZCCGEEEIIIYQApEAWQgghhBBCCCEAKZCFEEIIIYQQQghACmQhhBBCCCGEEAKQAlkIIYQQQgghhACkQBZCCCGEEEIIIQApkIUQQohXzpw5c6hatSrGxsZ8/fXXJZ2OEEII8dKQAlkIIYR4xbi7uzNu3Djat29f0qkIIYQQLxWjkk5ACCGEEM/W48J406ZNJZuIEEII8ZKRI8gvmXPnzmFsbIxCoeDhw4clnY4Qz11mZiZLliyhdevWuLi4YGRkhKurK82aNWPJkiVkZWWVdIpCPBMyvgshhCjMtm3bUCgULFmypKRTeaVJgfySGTx4MJmZmQCcPHmyZJMR4jk7c+YMlSpV4pNPPqF8+fLMmDGDvXv3smDBAmrVqsWYMWOoVasW165dK+lUhXhqMr4LIYQozPHjxwGoVq1aCWfyapMC+SWydu1a9uzZQ+vWrQH5AiVebefOnaN+/fo0bNiQO3fu8N133/H2229Tv359Wrduzfjx47l48SLVq1encePG3Lt3r6RTFqLYdB3fmzRpgpmZmdbXmDFj/sOMhRBC/NeOHz+OhYUF5cuXL+lUXmkKlUqlKukkRNFSU1MJDAwkOzubEydO4OrqSpcuXVi5cmVJpybEM5eVlUVwcDDNmzfn+++/1xqjUqnIzs7G0NCQd999l9jYWLZs2fIfZyrE03ue43u/fv3w8vKSO1kLIcQrwNfXF09PT/7999+STuWVJkeQXxJTpkzh1q1bTJs2DUdHR8qUKSNHkMUrKzQ0lOTkZCZPngxAdnY233zzDZ6enpibm9OpUyemT59OkyZNAPjhhx/YvXs3V69eLcm0hSiW5zG+Z2ZmkpaWRlZWlsbfhXjZqFQqMjMzdXoJ8SqLjo7m9u3bcnr1f0AK5JfA7du3mTp1Kg0aNKBbt24ABAcHc/nyZVJSUko4OyGevY0bN9K7d29MTEwAmDlzJlOnTmX48OFs27YNT09PjdNJHR0dqVOnDn/99VdJpSxEsTyv8X3ChAmYm5uzaNEivv32W8zNzVm6dOmzSluI/8y+ffswNjbW6XXz5s2STleI50auP/7vyGOeXgJDhw4lIyODn376Sd0WHBzM6tWrOXPmDLVq1SrB7IR49i5fvszbb7+t/nnevHmMHDmSwYMHA9CoUSPOnj1Ldna2OsbV1ZXIyMj/PFchnsbzGt+//vprOa1avBKqVavG0aNHdYr18PB4ztkIUXKOHTsGQNWqVUs4k1efFMgvuL/++ot169bRq1cvfHx8iIuLA6B06dJAzo1cpEAWrxqlUomZmZn65xs3buSbEGrUqMHhw4fVP9+9e5dGjRr9ZzkK8bRkfBeiaFZWVlSuXFmnWCMj+VorXl3Hjx/HzMyMoKCgkk7llSenWL/AsrKy1EfMFi9ejL29vfrVvXt3QO5kLV5NPj4+XL58Wf2zq6trvlPnbty4of775cuXOXLkCE2bNv2vUhTiqcj4LoRu5BRrIXIcP36ckJAQ2RH0H5At/AKbNWsWZ8+eZdy4cbz++uv5ft+pUyf5AiVeSc2aNSM0NJRPPvkEgK5duzJx4kQqVqxIcHAwW7ZsYcOGDdSuXZtdu3bx4YcfMmjQIPWRNyFedDK+C6EbOcVaCIiPj+f69es0a9aspFP5vyCPeXpBRUVFUbZsWQIDAzlw4AAKhSJfTOPGjTly5AgJCQkYGMjJAOLVERcXh7+/P99//z29evUiKSmJnj17snHjRgDKlClD+/btmTZtGq6urnzxxRcMHTpU6/8TIV40Mr4LIYTQx19//UXjxo2ZP38+ffv2Lel0Xnky676gRo8eTWJiIvPmzSvwS39ISAjJyclcuXLlP85OiOfLzs6OefPm8dFHH7F69WqsrKzYsGEDDx8+5MKFC1y6dIkRI0Zw7do1wsPD+eyzz6Q4Fi8NGd+FEELo4/EdrOUGXf8NOYIshHhhLVu2jA8++IDGjRvz/vvvU7NmTezt7YmNjeXIkSMsXryYxMRE/vjjDymQhRBCCCHEU5MCWQjxQrtx4wYTJ05k/fr1xMTEqNvd3d3p3r07w4YNw8XFpQQzFEIIIYQQrwopkIUQL4Xs7Gzu3LlDfHw8Dg4OeHl5lXRKQgghhBDiFSMFshBCCCGEEEIIgdykSwghhBBCCCGEAKRAFkIIIYQQQgghACmQhRBCCCGEEEIIAIxK4k2VETdL4m11lrzxl5JOoVA2DVuXdAqFyrL3LukUCmXs7FPSKQjxf2vp8bslnUKR3lacLekUChW+bk1Jp1Ao9y7dSjqFQhmFNCvpFIT4v3WkReOSTqFQwRu2lnQK4jkzMzcvMkaOIAshhBBCCCGEEEiBLIQQQgghhBBCAFIgCyGEEEIIIYQQgBTIQgghhBBCCCEEIAWyEEIIIYQQQggBSIEshBBCCCGEEEIAUiALIYQQQgghhBCAFMhCCCGEEEIIIQQgBbIQQgghhBBCCAFIgSyEEEIIIYQQQgBSIAshhBBCCCGEEIAUyEIIIYQQQgghBCAFshBCCCGEEEIIAUiBLIQQQgghhBBCAGCkb4f9+/czbdo0jh07Rnh4OBs2bKB9+/bPLKHQDVtYuHINkdExBJTyZfjgj6gWUklrbGRUNNNm/cL5S1e5dfcePTq3Y8Tg/hoxG7f9wZeTvsvX99juLZiamuid39qT11h29DLRyWn4OdrwaaMQqng5FRifkZnFb4cusOP8HaJT0nCxMqd3rfK8WakUAL+fvcn4ncfy9ds/pD2mRoZ657di6x4WrN9BZGwcAT6ejHz/bapXKKs19ti5y3y3eC3X74aTlp6Bh7MjXVs0pHf7ZuqYK7fu8fPyjZy7dpP7EdGM6PcWvdo107o8XYSu3/zo840moFQphg/pX/jnO3Me5y9defT5tmfEkAEaMbv2/c2vS1Zy5959MjOz8PHyoNdbnXmzxRvFzlEIod3zHv8BVCoV+9ct4cSfW0lLTsQjIJCWfQbj7F2qwD6n9u1gy9xp+dpHLN6OkUnOOH9s12aO7dpMXNRDAJy9fHmtY08CKtfSK7+Vf/zNwi17iIxLIMDLjRHvdqRaoL/W2GMXr/H9ii3cuP+QtHQlHs72dGlSl16tG6ljeo/7maMXrubr+3qVIOYM/1Cv3ACsajbC+rXmGFrZoYy4R+y2UDJuXdEa69DxPSyr1svXrnx4jwc/j81dZp2mWNVshKGdA9kpSaSeDSNu1zrIzNQ7v5U797Nw85+Ptp87I3p3pFpggNbYYxev8f3yTdy4l2f7Na1HrzaN1TEb9h7iy9nL8/U9vux7TE2M9c5PCFGw5zkHWFcMxq1zNyzLlMHE0YnL48YQd/CfwvtUCsbngwGY+5YiIzqK8DWriNy2RSPGvt5reL3bB1N3D9LD73N38QJi/z1Q7DxXrVrFosWLiYqKwt/fn2FffEHVqlULjA8LC2P6d99x7do1nJ2d6d27N127dNGI2b17N7Nmz+bOnTt4e3szaNAgmjRuXMASX+78VCoVc+fOZd369SQkJFCpYkVGjhxJQID2eUCfHPRd98LoXSAnJycTEhJCnz596NSpU7HetCDb/9zL5J/m8uXQQVSpVIE1m7fy0Rdfsnnpr7i7uuSLz1Aqsbez4/1332Lp6g0FLtfK0oLfl/+m0Vac4njXxTv88NcphjWpQrCnIxtO3+DT9QcI7d0MNxsLrX1G/X6YmJR0RjevipedFbEp6WRlqzRiLE2MWPNec838ilEcb/v7CJPnr2TMRz2pGhTAqh17+fDrH9gyawIeLo754s3NTOnRujFlS3ljYWbKsfNX+HrWYizMTOjaoiEAaekZeLs507x+dSbPD9U7p7xyPt85fPnZxzmf76atfPT5KDYv/Q13t4I+X1vef7c7S1ev07pMW2sbPni3O36+3hgbG7Pvn0OMmTQdR3s76tWq8VT5CiE0Pc/x/7GDW0I5vG0tb340DAd3Lw5sWMbyicPo//0iTM21j7MApuaW9P9+kUbb4+IYwNrBicZvv4+9mwcAp/f/werpY3l/0rxCi++8tv97nMmLNzCmbxeqlPNj9e5/+XDyXDZ/NxIPJ4d88RampnRv/hrlfDwwNzXh+KXrjJu/GnNTU7o2rQvAj5+9hzIzS90nPjGZjsOn0qxWZZ1yysu8Yg3sWr1F7JZlpN++ilWNBji/+wkPfhpDVnxMvvjYrSuJ+2Ot+meFgSGug74m5VxY7jqE1MKuWWdiNiwk/fZVjJzccOz4HgBx21fpld/2f48xedF6xvTrSpVypVm9+x8+nDiHzT+MLmD7mdC9+euU8/XM2X4XrzPu11DMzUzp2jS3sLcyN+P3GWM0+kpxLMSz9zznAAMzM1JuXCNq1w7KjBlXZLyJqxtlx08icvs2rk2diHWFivgOHEJmfByx//wNgFVgEAGjxnJ3yQJi/zmAfb36+I8ay4XPBpN86aLeOe7YuZOp06YxetQoKleuzNq1axkwcCAb1q/H3d09X/zde/cYOGgQnTp2ZOK333Ly5Em+nTgRB3t7mjZtCsCpU6cYNnw4AwcMoHHjxuzZs4dhw4axcOFCgitpP4D0suYHsHDRIpYuW8Y333yDr68vv/76Kx/178+mjRuxtLTU2keXHPRd96LofYp1y5YtmTBhAh07dtT7zYqyZNV6OrZuTue2LfEv5cOIwf1xc3EmdMPvWuM93d0YOaQ/7Vq8gVUBGxVAoVDg5Oig8SqOlceu8GalUrQL9sPP0YahjUJwtbZg3anrWuMP3njAibtR/NChHjV9XfGwtaSCuwPBnprFqkKhwNHSTONVHIs37qTjG6/Rpfnr+Ht7MOr97rg5ORC6/S+t8UH+vrRuUJsyvp54ujrxZqM61KtakbBzuUcbKpX144v3utL69VqYGOu9P0XDktB1dGzTgs5tW+FfypcRQwbkfL4bt2iN93R3Y+QnA2nXsuDPt2bVEJo2qI9/KV98PD3o2bUjZf1Lc/z0uafKVQiR3/Mc/yFnz/KR7eup37475Wu+hou3H2/2H44yI42z//xZeGcFWNk5aLzyKlutLgFVauHo7o2juzeNuvXFxMycu1fP65zf4q176dSoNp0b18Hf042RvTri7mjPql3aj3IE+nnRul41Arzd8XRxpO1rNagXXJ7jF6+pY+ysLHG2s1G//j1zCTNTY5rXrqxzXo9Z12tG8rG/ST72N5mR4cRtCyUrPgarmg21xqvSU8lOSlC/TDxLYWBmQfLx3PUx8fYn/fZVUk4fJisumvSr50g5fRgTz1J657f497/o1LgOnZvUxd/LjZG9O+HuZM+qP7QfzQn086Z1/eq52+/1GtQLKc/xC9c04hQKhcY2dLaz0Ts3IUTRnuccEB92hHuLF6iL26K4tG5LRkQEt+fNIu3ObSJ3bCPqj+24d+6qjnFt34n442GEr1pJ2t07hK9aScLJ47h16FysHJcuXUqHDh3o2LEjpUuXZtiwYbi5ubF6zRqt8WvWrMHd3Z1hw4ZRunRpOnbsSPv27Vm8ZIk6Ztny5dSuXZu+ffvi5+dH3759qVmzJsuX5z8z5mXPT6VSsXz5cvr160fTJk0oExDAhPHjSUtNZdv27QX20yUHfde9KC/MNchKpZLzl69Qt2Y1jfa6Napx6qzuX2C0SUlN5Y3OPWnSsQcDho3hwuX8p7MVmV9WNhcfxlHL11WjvaavC2fuR2vt8/e1cAJd7Vh29BJt5m2l84KdzNh7mjRllkZcakYm7X7ZTpt52xi64R8uPYzTO78MZSbnrt6iXpUKGu31qlTghJbT97Q5f+0WJy9cpUbFcnq/f1FyPt/L1K2h7fN9NsWsSqXiUNhxbt6+S7XK+u/VEkKUrLiIcJLiYihdqbq6zcjYBN/AEO5eLnycyEhL5aeP32bGwG6ETh3FgxvaTysGyM7O4ty/e1Cmp+FVJkin3DIyMzl/4w51gzXHx7rB5Th5+YZOy7hw4y4nLt+gelDBp5Kt/+sQLetUxcLMVKdlqhkaYuLhS9pVze2UdvU8Jj6Fn7r2mGW1+qRfv0BWXO6cln7rKiYevph4+uW8jb0TZmUrkXr5tF7pZWRmcv76HeqGlNdorxtcnpOXdN1+dzhxKf/2S0lLp+mAsTT+aAwDJs/lwo07euUmhHj5WAVWIP54mEZb/LEwLMqUQ2Fo+CgmiPjjx/LFWAVqflfWhVKp5MKFC9SpU0ejvU7t2pw6dUprn9OnT1Ondm2Ntrp163L+/HmUSmXBMXXqFLjMlzU/gHv37hEVFaWRo4mJCdWqV+fUyZMF9isqh+Kse1Ge7pCgDtLT00lPT9doM0hPx9RUc/KPjU8gKysbR3s7jXZHezuiYmKL/f5+vt5MGPk5ZfxLkZycwrI1G+k5YCjrFs7B19tT5+XEpaaTpVLhYKF5dNfR0oxDNx9q7XMvPplT96IxMTJkypt1iEtNZ9qfJ0lIy2BMi5wvgL4O1oxpUR1/JxuSMzJZdfwq74fuZdm7TfCxt9Y9v4REsrKzcbKz1czPzoaouPhC+zbs/Rkx8YlkZWcx8O12dGn+us7vq6vY+Picz9fBXjM/B3uioov/+QIkJiXTuMNbKDOUGBga8OXQwfkKcSHEf0/b+K/MSMfYRHvxlxSfMxZY2mqOE5a29sRHaR9nARw9fHjzo2G4+JQmPTWZI9vXs+jrIXww+Rcc3L3UcRG3r7Nw7MdkKjMwMTOny9BxOHuV0mld4hKSycrOxtFW8+iko601UXGJhfZtPGAsMQlJZGVlM6BzSzo3rqM17vTVW1y5E843H76tU055GVhYozA0JCspQaM9KzkeM6uKRfe3ssWsTCWi1/yi0Z565gjxlla4vD8CFKAwNCLp8F8k7i94b782udtPc17L2X4JBfTK0fijMY+2XxYDurSic5O66t+V9nDl2wHvUMbHneTUNJZu28c7Y35g/bQR+Lrnv3RHCPHf0TYHZGRnY2Lw9MfnTOztiY/V/P6ojI3FwMgII1tblDExGNs7kBmreXlJZmwMxvaac4wuYmNjycrKwtFB8+wkR0dHoqKitPaJiorCsW5dzXgHBzIzM4mLi8PZ2TknxlHzzNLClvmy5vf4/R6/x5PveT88vNB+heVQnHUvynMvkCdNmsS4cZrXEnz5+RDGfvGJ1niFQqHxswoVTzTpJaRCICEVAtU/V6lUgS59B7J83SZGfTKgkJ7aPZmLSgUFpZetysn9m1Y1sTLNuR4qIyubkZsP8UWTKpgZG1LJw5FKHrkfeoinI+8u/ZM1J67xWePKeuf3ZDIqlQpFgRnmWDZ5BClp6Zy8dI3vF6/F192F1g1qF9qnuPJ9vipVvjZ9WVqYs27hXFJSUzkUdoJpM+fi5eFOzaohT7VcIcTT0Tb+t//gUzp+OBSAMwd2s23+D+rfvTVsYs5ftIwTBY+04FUmSONIsHfZiswf9RFHd26kee9B6nZHD2/en/wLaclJXDzyN5vnTKHn2O91LpK1pIZKS9uTlnw9hJS0dE5duckPK7fg4+ZE63r5d+Kt/+sQZbzdCQ7w1TmfoikeZVk4y6r1yE5LIfXCCY12U79y2DRoQ+yWZWTcvY6Rgwt2rd/GJrENCXu1X/5UaDb55ngdtt83Q0hJy+DU5Rv8sGJzzvarn7OTOaSsHyFl/dSxVcqVpvPwqSzfvp9R7xXvNEohxLOhbQ7o51+K9wP8CuihryfGtsdjiUpVUETRA04R9P0eqy3+yfZn+d34Rcpv69atjJ8wQf3zzJ9/LvbydOnzLLfjcy+QR44cydChQzXaDOLz7yWwt7XB0NAg39HimNh4HIuxp6cgBgYGVCxfltt37+nVz87cFEOFgujkNM38UtJwKOCaYSdLM5ytzNXFMUApB2tUQERSitYjxAYKBUFu9tyJTdIvPxtrDA0MiIrVPFocE5+IYxHXY3m5OQNQtpQX0XEJzFy56ZkXyPa2tjmfb7TmnryY2DgcHeyeatkGBgb4eOWcDVC+TADXb91m/rKVUiALUcK0jf9rz0eq/162Wl08A3J3YGY9OqUrOS4Ga/vcHYcpCXFY2trp/L4KAwPcS5cj5sFdjXZDI2Mc3HLGCg//cty/fokjO9bTut9QbYvRYGdjmTPGPnG0MyY+Md9R0Sd5PbpJYlkfD6LjE5m9dke+Ajk1PYPt/x5nUJeWReaiTXZKIqqsLAytNMd7Q0ubfEeVtbGsWp+UkwchS/MSINsm7Uk+eZDkYznXBSof3kNhYop9u3dJ2LdV44toYQrffkXMUS45T4pQb78129UF8pMMDAyo6O/DrQcROuUlhHh+tM0Bpzu/+UyWnREbi7G95hFDYzt7sjMzyUzIGWeUsTH5Yozs7FHG6n/mor29PYaGhkRFa15WGRMTk+/o5mNOTk75jmDGxMZiZGSEra1twTGFLPNlyq9hw4ZUynMjr4yMDACioqNxdnbWeM8nj/4WmWeeHIqz7kV57tcgm5qaYmNjo/F68vRqAGNjY4LKluHg0eMa7QePHiekom7XiOlCpVJx8ep1vW/UZWxoQHlXO47c0px0j9yK0DgCnFewpyORSWmkZOQ+CuN2bBIGCnCx0n43VpVKxeWIeL1v1GVibESFAF/+PaF5vfa/J89RpYBHaBT0/hlK/R/dUZScz7ds/s837DghFfW/FqQwKhVkZCif6TKFEPrTNv7nPb3a1NwCBzdP9cvJyxcrOweun8m9ZiwrU8mtC6fwKqv7OKFSqXh46xpWdkVMjCqVuigviomREUF+3vx75pJG+79nLlG5rO5HQ1QqtI6xOw6eICMzk7avFfPu+1lZZNy/hVmA5nYyCwgi43bh96Ew9SuHsZMrycfy3yxLYWySvwhWZet9FMbEyIig0t78e1rzzrH/nr5E5XJ6br9CHi+lUqm4eOsezk9cbiSE+O9pmwOexenVAEkXzmFbRXNHo03V6qRcuYTq0Y6+pAvn88XYVq1G0gX9731jbGxMYGAghw4e1Gg/dPgwISHaD8gEBwdz6PBhjbaDBw8SFBSEsbFxbsyhQ5oxhw4VuMyXKT9LS0t8fHzUL39/f5ycnDRyVCqVHAsLI6Ry5QKXU1QOxVn3ouh9BDkpKYmrV3Mn2xs3bnDy5EkcHBzw8fEpVhKPvdutIyMnTKNC+bKEVAhk7eZthEdE0K19awB+mLuAiKgoJn05TN3n4pWcu1mmpKYSGxfPxSvXMDYywt8v5xS12QuXERJUHh9vz5xrkNdu5NKVa3z56UC983u7Whm+3n6U8q72VPJwYOPpGzxMTKFjSM7kPuvvs0QmpfJ1y5wvOM3L+7Dg4EXG7wzj/bpBxKem8/P+M7StWAoz45wbCMz/9zwVPRzwtrNSX4N8OTKOL5pU1ju/Xu2bM+L7X6lYphSVy/uzesc+wiNj6NayIQDfL17Lw+hYpgx9H4DlW//Ew9kRP6+c258fP3+ZhRt20qNNE/UyM5SZXLtzHwBlZiYR0XFcuH4bCzNTfD00b1hWlHff6sTI8VNyPt+Kjz7fhxF0a98GgB/m/kZEZBSTxgxX97l4JeffWu7nexVjI2P15/vr0pVUKF8Wbw8PlJlK/j54hC07dvHl54P13n5CiMI9z/Efck6PqtmyI/9sWoGDuxcObp78s3EFxiZmVKyXOy5tmj0Za3snGr/dD4D9a5fgWSYQBzdP0lNTOLpjAw9vXaVFn9xxYE/ofAIq18TG0YWM1BTOHfyLW+dP8faISTrn16t1Q0bMWkbF0j6ElC3Fmt3/Eh4VS7dHjxz6YeUWImLimTTwHQBW7Pwbdyd7SnvkXAt7/NJ1Fv2+h+4t8t/nYf1fh2hSvRJ21gU/kaEoif/8gWPnfmTcu0n6nWtYVX8dQ1sHko7uA8D2jY4Y2tgTs07zsYeW1V4j/c41lBH5z6xKvXQK67rNyAi/rT7F2qZJe9IuntT56PFjvdo0YsTPSx9tPz/W7P6H8KgYur1RH4AfVmwmIiaOSYPeBWDFjv05288zZ645fvE6i7b8SfeWDdTLnL1mG8Fl/PB1dyYpNY3l2/Zx6eZdvuzbJX8CQoin8jznAAMzM8w8cu8NZOrmjkVpfzITE8mIjMCrTz9MHJ24Pn0yABFbt+D6Znt8PuhPxPatWAUG4dy8Jdcm557S+3DjegKn/4h7l7eIPfgP9nXqYVOlGhc+K953xJ49ezJ69GiCKlQgJDiYdevWER4eTpfOOZdzzPjpJyIiIvj20WnFXbp0ITQ0lGnTp9OpY0dOnT7Nhg0bmDJ5snqZPbp3572+fVmwcCGNGjbkr717OXz4MAsXLnzl8lMoFPTo0YPffvsNH19ffHx8+G3+fMzMzWnVMvfsqdFffomLiwtDBg/WOYei1l1fehfIYWFhNGrUSP3z41MnevXqxaJFi4qVxGMtmzQkPiGRuYuWExkdQxk/X+ZMnYCHW87kGBUdQ/jDSI0+nd/LvY74/KUrbN31Fx5urvyxJucW5YmJSXw9bQZRMbFYW1pQvkwAi2ZOp1KQ5p00dfFGeW/i0zJYcOgCUclplHa04YeO9XC3yflCE52cxsOEFHW8hYkRP3euz3d7TtF72R5szUxoWs6LD+vl7uFPTFcy6Y8TRKekYWViTFkXW+Z1a0AFd/0fRdXqtZrEJSQxO3QzkTHxlPH1ZO5Xn+D56PS0yJh4wiNzT3FWZav4fvE67j2MxNDQEG83Z4b26ky3FrlfPiJj4ug45Gv1zws27GDBhh3UqFiOJZNyC1ldtGzSkPj4BOYuWvbo8y3FnGnf5vl8owl/qHmEvnOf/uq/53y+e3I+37XLAEhNTWPCdz/xMCIKU1NT/Hy9mTR2BC2bNNQrNyFE0Z7n+P9YnbZvoczIYMeCGaQmJ+LpH0j3UVM0noEcHxWhcV1RWkoSW+d/T3JcLKYWlriVCuDdsT/gGZA7zifHx7Jp1mSS4mIwtbDExac0b4+YROlg7afqatOyblXikpKZs24nkXHxlPF2Z+6ID/FwzhmvI2MTCI/KPXVPpVLx48ot3IuMwdDAAG9XJz59u636GciP3bwfwfFL1/l1VH+eRurZo8RZWGHTqC2G1rYoH94jaukM9V2pDa3tMHzi8VcKU3PMg6oSt037c+4T9v4OKrBt2h5DG3uykxNJvXiK+N3r9c6vZd1qxCUmM2fdDiJjE3K238j+ebZfvPbtFxGds/3cnPi0x5saz0BOSE7l619WEhWXiLWFGeX9vFg87hOCA0rpnZ8QonDPcw6wLFuOwKm596Tw/TDn+33krh3c+G4qxg4OmLjk3ngv4+EDLo8Zic+HA3Fp0w5lTDS35szUeExU0oVzXJ00Hq9e7+H5bh/Sw+9zbdL4Yj0DGaBF8+bEx8Xxy7x5REZFERAQwKyZM/Hw8AAgKjKSB3luNuXl6cmsmTOZNn06q1atwtnZmeHDh6ufMQxQuXJlpkyezMxZs5g1axbe3t5MmTKlWM8YftHzA+jTuzfpaWlMnDiRhIQEKlWqxJw5czSegfwgPByDPHO8LjkUte76UqhUeu4CfgaUETf/67fUS/LGX4oOKkE2DVuXdAqFyrL3LukUCmXs/PRHuoQQxbP0+N2ig0rY24qzJZ1CocLXFe+5jv8V9y7dSjqFQhmFNCvpFIT4v3WkReOSTqFQwRu2lnQK4jkzMzcvMuaFeQ6yEEIIIYQQQghRkqRAFkIIIYQQQgghkAJZCCGEEEIIIYQApEAWQgghhBBCCCEAKZCFEEIIIYQQQghACmQhhBBCCCGEEAKQAlkIIYQQQgghhACkQBZCCCGEEEIIIQApkIUQQgghhBBCCEAKZCGEEEIIIYQQApACWQghhBBCCCGEAKRAFkIIIYQQQgghACmQhRBCCCGEEEIIQApkIYQQQgghhBACAIVKpVL91296JSLxv35Lvfhe2lrSKRQqPKhNSadQqLOV65Z0CoVqfed0SacgxP+tPcE1SzqFItU7sKOkUyhUTLZpSadQKKe0ByWdQqGM3fxLOgUh/m+lpaaWdAqFOt2hdUmnUKjgDS92jfIyMDM3LzJGjiALIYQQQgghhBBIgSyEEEIIIYQQQgBSIAshhBBCCCGEEIAUyEIIIYQQQgghBCAFshBCCCGEEEIIAUiBLIQQQgghhBBCAFIgCyGEEEIIIYQQgBTIQgghhBBCCCEEIAWyEEIIIYQQQggBSIEshBBCCCGEEEIAUiALIYQQQgghhBCAFMhCCCGEEEIIIQQgBbIQQgghhBBCCAFIgSyEEEIIIYQQQgB6FsiTJk2iRo0aWFtb4+LiQvv27bl06dIzTUilUrF8wTzebd+Cjk3qMeLjD7h141qhfXZs3sCwgf3o1rIR3Vo2YvQnA7h0/qxGzLYNaxnU6y26NG9Al+YN+OyjPoQd+kfv/EL/OkKLET9Q7aPxdP1mLscu39Kp34krt6n8wTg6j5tTYMz2I2eo1O8rBs9cqXdeealUKpbMn8dbbzanTcO6fD7wA25eL3wb3rx+jW9GfUHPjm1oVrca61etyBeTkpzMnB+n806H1rRpWJdPPujDpfPndM7LoVY1qi/4mSZhu2l95zSuzRsVGm/q4kTlnyfTYO9mWt06SdBXw7TGler7Dg32bqbFlSM0PvwHgV99gYGpic55CSF087znALtqVQj++Tvq7d5K49NHcGrUoNB4EydHgiaPp9bmNTQ6eYgywz7NF2PpX5qK30+mzvaNND59BK933nqqHEPXrKNFu45Ur9eAbj17c+zEyULjw44dp1vP3lSv14CW7Tqxet36fDEJiYl8O2UajVu0oXq9BrTr8hZ///NvsfJTqVQs/HUunVo3o9nrdRjS/31uFDH+37h+jbHDP6db+9Y0rFWVNSuX54vZtG4N7/XoSqtGr9Gq0WsM6NuLw/8WYw7d8DvNu/Wh6hvt6Pr+YI6dOltgbGR0DMO+mUKbd96nUsPWTP55Xr6Y3kOGU7FBq3yv/sO/0js3IUTh/qs6YM6cOTR94w1q1qpF3759uXr1apH9du/eTYeOHaleowYdOnbkzz178sWsWrWKlq1aUaNmTd56+22OHz+uc17WFYMp8/W3VF6+mpo79mBXp17RfSoFU+HnuVTfvIPghctwbtU2X4x9vdeoNG8B1TfvoNK8BdjXra9zTtrou45hYWG89fbb1KhZk1atW7N6zZp8MbpsW129qJ/vk/QqkPft28fAgQM5dOgQu3btIjMzk2bNmpGcnFzsBJ60bsViNq5awUefDuP7Xxdj7+DImE8HkpJS8HucOXmMBk2bM+mnuUyfuxBnV1fGfjaIqMgIdYyjiwu9PhrEj78u4cdflxBStToTRn5WZPGd144jZ5kSuoP3W73OmrEfUa2sL/1nLCM8Oq7QfokpaYxasJ5agX4FxtyPjmP6mj+oWsZX53wKsnrZYtaHLmfQ0OH8/NsS7B0cGfHJAFIK+ZzS09Jw8/Dkvf4f4+DoqDXmh8njOX70MMPGjmfeslVUrVmb4UP6a2znwhiam5Nw4RLnvpykU7yBiQkZ0bFc/flXEs5rH4A92rei/IghXPlxLvsatef0F1/h0bY55UYM0ek9hBC6e95zgIG5GUmXrnB50jTd4k1MUMbGcuvXhSRduqI9xsyU1Lv3uDZjFumRUU+V344/djP1+x95v09vVi9bTNXKIQwYMpTwBw+0xt+9d58Bn3xG1cohrF62mH59ejF5+g/s2vOXOkapVPLhwCHcD3/Ad1O+ZfPaUL4aPRIXZ+di5bhy6WLWrFjOkM+HM3fhUhwcHPn84/5Fjv/unp58MGAwDo5OWmOcXVz4YMBg5i1exrzFy6havQajv/i0yOI7r+179jF55i+837Mba379marBFfho+FjCH2qfQzIylNjb2fL+O29Rzl/7/Dlj/JfsXb9M/dq4aA6GhgY0b/h0XzKFEPn9F3XAwkWLWLpsGSNGjGD58uU4OjnxUf/+hb7HqVOnGDZ8OG1at2bN6tW0ad2aYcOGcfrMGXXMjp07mTptGu/368eq0FCqVqnCgIEDCQ8P1ykvAzMzUm5c49bsn3WKN3F1o+z4SSSePcPZgR8QvmoFvv0HYV/vNXWMVWAQAaPGErVnF2cHvE/Unl34jxqLZbnyOr3Hk/Rdx7v37jFw0CCqVqnCqtBQ+vXty5QpU9i9e7c6Rpdtq48X9fN9kl4F8o4dO+jduzcVKlQgJCSEhQsXcvv2bY4dO1asN3+SSqVi0+qVdHu3D3UbNKZU6QCGjh5Henoa+3btKLDfF2Mn0LpDF0qXKYe3byk+HvYl2dkqTh07oo6pVe91atSpj6ePL54+vrz7wUDMzC24dE73D3jJrn/pWL8KnV6vRmkPZ4a/1RI3extW7T1aaL9vlm6hVa1KhJT21vr7rOxsRvy6joFvNsTL2V7nfLRRqVRsWL2Ct3u9R/2GjfHzD+CLMeNIT0tjTyHbsFxQBT4Y9AmN3miOsXH+o6/p6Wn8vXcP/QYMJrhKVTy9vHm334e4eXiyZf1anXKL3HuAy9Nm8mDHnzrFp969z/mvp3Bv3RYyE5O0xthXCyE27CT3N24j9e59ovYf5P6m7dgFV9DpPYQQunvec0DMgYNcnzmXyD/36hSfdj+cK1O+58GWbWQmaR8jEs9d4Nr3PxOxYxfZGRlPld+SFSvp0K4tndq/SWm/Ugz/7FPcXF1YvTb/UWGANes34O7myvDPPqW0Xyk6tX+TDm+2YfGy3DN0NmzeQnxCAj9On0KVkBA83N2pWjmEcmXL6J2fSqVibegK3unTl9cbNaG0fwAjv/qGtLQ0du/cXmC/8kEV6D/4U5o0a46xibHWmLqvNaB2vfp4+/ji7eNLv/6DMLew4PxZPebQ1Rvo2KoZndu0wL+UDyM+/hA3Z2dCN23VGu/p7srIwR/RrkUTrKwstcbY2ljj5Oigfh0MO4GZqSnNGr6mNV4IUXz/RR2wfPly+vXrR9MmTSgTEMCE8eNJS01l2/aCx7Bly5dTu3Zt+vbti5+fH3379qVmzZosX557NszSpUvp0KEDHTt2pHTp0gwbNgw3NzetR0y1iQ87wr3FC4j952+d4l1atyUjIoLb82aRduc2kTu2EfXHdtw7d1XHuLbvRPzxMMJXrSTt7h3CV60k4eRx3Dp01uk9nqTvOq5ZswZ3d3eGDRtG6dKl6dixI+3bt2fxkiXqGF22ra5e5M/3SU91DXJ8fDwADg4OT7MYtYfh94iNiaZKjdrqNmMTEypWrsqFs6d1Xk56ehpZmZlYW9tq/X1WVhb7du8kLS2V8hWCdVqmMjOT87fCqVshQKO9bgV/Tl67U2C/DQdOcCcyhv5tGxYYM3fLXuytLej4WjWdcinMg/v3iImOplrN3G1oYmJCcOVqnD9zqtjLzcrMIjsrCxNTU412UxNTzp0+WezlPq2YoyewrRSIbeWKAJj7eOLS6DUi/txfYjkJ8f/iWc8BLzKlUsmFi5eoW6umRnudWrU4eVp7kXjqzFnq1Kql0Va3di3On7+AMjMTgL37DxBSqSITp0ynYfNWdOjWg18XLiIrK0vvHMPv3yMmOooatTTH/8pVqnHujO5zaFGysrL484+dpKWmUqGijnOoUsn5y1epW6OqRnvdGlU4dfbCM8tt/dadtGzcAAtzs2e2TCGEds96Drh37x5RUVHUqVNH3WZiYkK16tU5dfJkgf1Onz5Nndq1Ndrq1qnDqVM533uVSiUXLlzQWC5Andq11THPmlVgBeKPh2m0xR8Lw6JMORSGho9igog/fixfjFWg/gd5irOOWrdb3bqcP38epVJZcEyebauPl+nzNSpWL3L2AgwdOpT69etTsWLFAuPS09NJT0/XaMtIz8hXaAHERkcDYOegeYqvnb0jEQ90P0S+eO5MHJ2dqVxd84vMzWtX+bx/HzIyMjA3N2f0t9Pw8Sut0zJjk1LIys7G0UZzL7ajjRXR8dqPXNx6GM2P63axePh7GD36z/CkE1dus/7ACdaO/UinPIoSE5OzDe2f3IYODnptwydZWFoSVDGY5Qvn4+Prh52DA3/t2snF82fx9PZ5qpyfRvjmHZg62FN33WJQgIGxMbeWrOLa7AUllpMQ/w90mQO0jv/Z2ZgYvHz3h4yNiyMrKwvHJ74IOjraExUdo7VPdHQ0jo6aZwU5OjiQmZVFXFwczk5O3L13jyNhx2jdohmzf/yeW3fuMHHqdLIys/jo/b565RgTrX38t3dw4OFTjP+PXb96hQH9eqvn0PFTvqNUaR3n0PgEsrKycXSw02h3tLcnKib2qXMDOHPhEldu3OKb4Z88k+UJIQpW3DlAlZ2NqZYaACAqKucymHzjrIMD9ws5VTYqKgrHJy4PdHR0VC8vNja2gPE7N+ZZM7G3Jz5Wc2xTxsZiYGSEka0typgYjO0dyIzVnD8yY2Mwttf/bNLirGNUVBSOdetqxjs4kJmZmTNHOTsXuW318TJ9vsX+ljJo0CBOnz7NypWF31Bq0qRJ2Nraarzm/vQdAH/9sZ3OzV5TvzIf7VFXoNBYhkqlQqFQ5Fu2NmuXL2bf7p2MmjAtXxHu6ePLTwtW8N3chbRs15kfvv2a2zeu67rKORT5c3uyDXJOmx7+61oGtmtEKTft13Qlp6Uz8rd1fP3um9hbaz99rCh/7tzGm03qq19Zj7YhT6akxzYsyLCx36BSqXi7XQtaN6zDpjWhNHqjBQYl+GXXoXZ1/D9+n7Ojv+VAq7cIe/8TXJq8TsCQD0osJyH+H+gyB2gb/1dGPn2hVpKeHEcLmAJy45+cz1BptKtUKhzs7Rk7agRBgeVp2eyNnGuc120oMpddO7bRomE99Us9hz6Rj0pbYzF4+5Zi/tKVzP5tMe06dmHSN2O5eV2/OVTb9njauemx9Vv/oIyfL5UCyz2T5QkhClbcOWDatNx7TGzdupXadeqoX7ljmP51gC59irPcp6PS/PHxW6lUBUU89Vit7zpqi3+yvbjb7WX+fIt1BPnjjz9m8+bN7N+/Hy8vr0JjR44cydChQzXa7sTnXAdWq/7rlAvK3eukVOa0x8ZE4eCUW1TGx8Vgp8PpG+tXLmXNsoVM+GE2fgH5r98yNjbGwyvnOuAy5YO4cvE8m9euZNAXo4tctr2VBYYGBvmOFsckJuc7qgw5xe+5m/e5ePsBE1dsAyBbpUKlUlH5g3HM+7Qntpbm3IuK4+Ofc69Hy370D7PyB+PYMuFjvF0KX+869RtQvkIl9c/KR9fYxUZH4+iUe5OXuNhYnbZhYTy8vPlu9q+kpqaSkpyEo5Mz344ZgZu7x1Mt92mU+2IQ99b/zp3QnGsAEy9ewcjcnEpTxnL1p181BiEhxLOh6xygbfz/t27j553ec2FvZ4ehoSFRj47SPhYTE5tvr/Vjjo6O+Y4ux8TEYmRoiK1dziVATo6OGBkZYZjnLCO/UqWIio5GqVRibKz9mmCAeq81ILBC3jk055S4mCfH/5gYHBy033xRH8bGxng9OmOofGAQFy+cY92qFXw28ssi+9rb2mBoaJDvaHFMbByO9nZPnVtqWhrb9+xj4HvvPPWyhBCFe5o5QJWdrf57w4YNqVQp9ztsxqPvsFHR0TjnuVFhTGzB4yyAk5NTviOFMTEx6qOO9vb2BYzfMfmOTD4rGbGxGNtr5mxsZ092ZiaZCQkAKGNj8sUY2dmjjNX/rJrirKPW7RYbi5GREba2tgXH6LjdXubPV69DfyqVikGDBrF+/Xr27NmDn1/Bd2V+zNTUFBsbG43X4yO7FhaWeHh5q18+pUpj7+DIiaOH1f2VSiVnTx4nsIjrnNatWELo4vmMm/4zZcoH6bw+ygylTrHGRkYE+bpz8LzmHTsPnr9OZf/8N9+yMjNl/bgBrPnqI/Wra4PqlHJzYs1XH1GptBd+7k75YhqGlKNmuVKs+eoj3BxsiszLwtISTy9v9cvXrzQOjo4cf2Ibnj55jKBKITqta1HMzc1xdHImMSGBsMMHqfNaw2ey3OIwNDODPIMtPBp8FYpncsRECJFL3zlA6/j/Ep5eDTnFYWD5chw8rHlTxkNHjlA5uJLWPiGVKnLoyBGNtn8PHyEoKBBjo5z905VDgrlz9y7ZecaxW7dv4+zkVGhxDDnjv5e3j/pVyq80Do5OhB05pI5RKpWcPHGMCpV0u1ZYLyoVGUod51BjY4LKBnAw7IRG+8GwE4RUDHzqVHb+9TcZSiVt33g5d8AI8TJ4FnNA3tOrLS0t8fHxUb/8/f1xcnLi0MGD6hilUsmxsDBCKlcu8H2Cg4M5dOiQRtvBQ4cICcn53mtsbExgYKDGcgEOHT6sjnnWki6cw7aK5r2FbKpWJ+XKJVSP7jGRdOF8vhjbqtVIuqD7I1QfK846BgcHc+jwYY22gwcPEhQUpJ5/itq2hXmZP1+9jiAPHDiQFStWsGnTJqytrXnw6NEWtra2mJubFyuBvBQKBe26vs2aZQvx8PbBw8ubNUsXYmpqRoM3WqjjvpswFkcnF3p/NAjIOa162W9z+WLsBFzd3ImNztnLYGZugbmFBQCL582iWu26OLu4kpqSwv4/d3L25DHGTf9J5/zefaMuI39bT4VSHoSU9mbN/jDCY+Lp2rAGAD+u20VEXCIT+3bEwMCAMp6uGv0drC0xNTbSaH8yxtrCTGu7rhQKBR26dmflkgV4eHvj6eVD6JIFmJqZ0TjPNpz6zVgcnZ3p2/9jIOcf6OPTzZWZSqIiI7h2+RJmFhZ4PjrqHnboX1SAl48v9+/e4ddZM/Dy8aV5m/zPddPG0MIcy1K51ytbeHtiE1SOjLh40u4/oNzwwZi5uXLq09wj+jZBOafKGVpaYOJoj01QObKVSpKu5OT6cPc+/N7vSfy5i8SdOINlKW/Kfj6Qh7v25iuchRBP53nPAYbm5pj75B6NMPf0wKpcGZTxCaQ/eEjpwQMwdXXhwuiv1TFW5XLOFjK0sMDY3h6rcmXIVmaScv0GAAojIywfPSLIwNgYUxdnrMqVISslldQ7d/XK793ubzPqq3FUCCpPSKVKrN2wkfAHD+nSqQMAM2bO5mFkJBPH5TyDt0vHDqxcvZZpP8ygU/t2nDpzhg2btjDl22/Uy+zWqSMrV69lync/8HbXLty+c4f5ixbTvVtXrTkURqFQ0Pmt7ixbtAAvbx88vX1YvmgBZmZmNG3eUh038esxODm78MHA3PH/5qPxP1OZM/5fuXwJc3Nz9RHjX2f/TK069XB2dSM1JZk9u3Zy8vgxpv44U/ft17UDI7/9jgrlyhBSoTxrf99BeEQk3d5sBcAPvywkIjKaSaM/V/e5eCVnp3RKaiqxcfFcvHINY2Nj/Etp3vti/dY/aFy/Dna2Re9YFkIUz39RB/To0YPffvsNH19ffHx8+G3+fMzMzWnVMncMG/3ll7i4uDBk8GAAenTvznt9+7Jg4UIaNWzIX3v3cvjwYRYuXKju07NnT0aPHk1QhQqEBAezbt06wsPD6dJZtztGG5iZYebhqf7Z1M0di9L+ZCYmkhEZgVeffpg4OnF9+mQAIrZuwfXN9vh80J+I7VuxCgzCuXlLrk2eoF7Gw43rCZz+I+5d3iL24D/Y16mHTZVqXPhscLG2X1HrOOOnn4iIiODbCTk5dOnShdDQUKZNn06njh05dfo0GzZsYMrkyepl6rJtdfUif75P0qtAnjNnDpBzyDyvhQsX0rt372Il8KRO3XuRnp7OnO8mk5SUSLnAinzz/UwsLHJPY458+AADRe5RiG0b15KpVDJpzHCNZb3d5316vPchAHGx0Xw/YSwx0VFYWlpRyr8M46b/pHHH7KK0qFmRuOQU5m7ZR2R8IgEeLswe0gMPR7ucvOKTCI+Of4q1fza6vpOzDWdOn0xiYiLlgyoy6YdZWFjmbsOIhw9QGOQeYY2OiqR/7+7qn9euWMraFUsJrlKN6bN+ASA5OYkFc2YSFRmBtY0N9Rs2oc+HAzAyKvwox2O2wRWosyb35llBXw0D4M6aTZweOgZTV2fMPd00+ry2M/f27HbBFfDs0JqUO/f4q27Of6SrP/0CKhXlvhiEmZsLGdGxPNy9j0tTdXtOnRBCd897DrCuEEjVBXPVP5cZ9ikA4Zt+58KYbzB1dsLMTXPnYc01uY95sKkQiFvrFqTeu8/Blu0BMHVx1ojx7d0T3949iT16jBN9++uVX4tmTYmLj2fe/AVERkUT4F+aWT9+h4e7OwCRUdE8ePBQHe/l6cHsH79j6g8zCF2zDmdnJ0Z8/ilvNG6kjnFzc2Xezz8y9YcZdO7eExdnZ3q81ZX33u2pV26Pvd2zF+npafwwdTKJiQkEVajItJ9ma4z/Dx8+QJHnSH5UZCTv93xb/fOq5UtZtXwpIVWrMWPOrwDExsTw7bgxxERFYWllRemAMkz9cSbVa+k+h7Zs3ID4+ETmLllBZHQMZfxKMWfKODwefaZR0bGER0Rq9Onc72P1389fusrW3XvxcHPhj1WL1O0379zl+Jlz/DJ9AkKI5+e/qAP69O5NeloaEydOJCEhgUqVKjFnzhws84xhD8LDMchzlmDlypWZMnkyM2fNYtasWXh7ezNlyhSC85ze26J5c+Lj4vhl3jwio6IICAhg1syZeHjodpmgZdlyBE79Qf2z74cDAIjctYMb303F2MEBExcX9e8zHj7g8piR+Hw4EJc27VDGRHNrzkyNx0QlXTjH1Unj8er1Hp7v9iE9/D7XJo0n+dJF/TecDusYFRnJgzw3w/Ly9GTWzJlMmz6dVatW4ezszPDhw2natKk6Rpdtq48X9fN9kkKl+u8v0rwSkfhfv6VefC9pfybjiyI8qE1Jp1Cos5XrFh1UglrfeXaPOxFC6GdPcM2ig0pYvQMFPzP+RRCTrf0OsC8Kp7QHJZ1CoYzd/Es6BSH+b6WlppZ0CoU63aF1SadQqOANL3aN8jIw0+Fsh5fzYjAhhBBCCCGEEOIZkwJZCCGEEEIIIYRACmQhhBBCCCGEEAKQAlkIIYQQQgghhACkQBZCCCGEEEIIIQApkIUQQgghhBBCCEAKZCGEEEIIIYQQApACWQghhBBCCCGEAKRAFkIIIYQQQgghACmQhRBCCCGEEEIIQApkIYQQQgghhBACkAJZCCGEEEIIIYQApEAWQgghhBBCCCEAKZCFEEIIIYQQQghACmQhhBBCCCGEEAIAo5J405W+VUribXXW7OKRkk6hUPYj3y3pFAr1xpndJZ2CEOIFdel2QkmnUKSDR6NKOoVC9aziUdIpFGpDhHlJp1Corm4lnYEQ4kUVvGFrSadQqNMdWpd0CkV60behLuQIshBCCCGEEEIIgRTIQgghhBBCCCEEIAWyEEIIIYQQQggBSIEshBBCCCGEEEIAUiALIYQQQgghhBCAFMhCCCGEEEIIIQQgBbIQQgghhBBCCAFIgSyEEEIIIYQQQgBSIAshhBBCCCGEEIAUyEIIIYQQQgghBCAFshBCCCGEEEIIAUiBLIQQQgghhBBCAFIgCyGEEEIIIYQQABjpEzxnzhzmzJnDzZs3AahQoQJjx46lZcuWzyQZn3o1qPvp+7hXrYC1uyurun7EpS27C4z3rluNphOG4Vi2NMYW5sTfvsex30I5/PNCdYyBkRH1v/iI4Hc6YuPhStTl6/z55TSu7dpfrBxVKhUbl/7G3m2bSE5KwL98BXoO+hyvUqUL7BN2YC9bVi4m4v5dMjMzcfP0pkXnt6nXNHe7bVgyn43LftPoZ2vvwE+rtuqVn12DFtg3b4eRrT0Z9+8QsWoBqVcvFBhvXfN1HJq3x8TVnezUFJLPniBi7SKyk5PUMfZN2mDXoDlGDk5kJSWSePwgUeuXocpU6pUbQOjaDSxatpLI6Gj8/Uox/NPBVKsSUmD80eMnmPbjTK7duImzkyPv9exO147t1b9XZmYyf9FSNm/bQURkFKV8vPl0UH/q16mld25CiMI97znAvW51Kg/ui3NIBSzdXdjeYyA3t/5ZYLxb7arU/vpz7MuWxsjcjMQ79zm/aBWnZy9Wx9iXD6DmqME4Va6AjY8n/4ycyOk5S4qdo0ql4tTWlVz5ZycZKUk4lSpLrW4fYefhW2i/jJQkTmxeyu2TB0lPScLa0ZVqnfriVbE6ACd/X8HpbSs1+pjZ2NF18lK981v62y9s3bSepIREyleoyMefD6dUaf8C+9y8fo3Fv87lysULPHwQTv8hn9Hxre4aMe90aMPDB+H5+rbt2IXBX4zQK7+/1iwmbPfvpCYl4lUmkDb9huDq7adT/9P/7GHNj+MpX6MePYZNULenp6bwZ+gCzh85QHJ8LO5+ZWjVZxBeAeV1zk0IUbjnPQcArFq1ikWLFxMVFYW/vz/DvviCqlWrFhgfFhbG9O++49q1azg7O9O7d2+6dumiEbN7925mzZ7NnTt38Pb2ZtCgQTRp3LhY+alUKubOncu69etJSEigUsWKjBw5koCAgEL76ZKDvuv+JOuKwbh17oZlmTKYODpxedwY4g7+U3ifSsH4fDAAc99SZERHEb5mFZHbtmjE2Nd7Da93+2Dq7kF6+H3uLl5A7L8HdM4rrxd5++Wl1xFkLy8vJk+eTFhYGGFhYTRu3Jh27dpx7ty5Yr35k0wszXl45gLbPx2nU7wyOZUjc5ey+I3uzK7cnL8nz6bRV59S9b1u6phGX39K1X5vsWPoOGZXacGx+Svpumo2biFBxcpx2+pl7Fi/kp6DPuPrnxdga+/ItBFDSE1JLrCPpbUNbd/uxZgZvzJh3lJea96a+dO/5UzYIY04T9/SzAj9Xf2aMG+ZXrlZV6+HS7c+xGxbx63xn5Fy5QJeg7/EyMFJa7x5QHnc3/uY+H92c/OrIdyfNw2zUgG4vTswd5k1X8ep4ztE/b6aG18N5sGSWdhUr4dTx3f0yg1gx64/mfLDT7zfpydrlvxGtcoh9P/0C8IfPNQaf/f+fQZ+OoxqlUNYs+Q33u/dk0nfzWDXnr3qmJ/n/srajZsZ+dknbAxdSteO7fhk+CguXLqsd35CiMI97znA2MKc6DMX+XvYeJ3iM1NSOfvrcja2eofQWq05Nn0ONUcPIbBXV3WMkbkZCTfvcPjr70h+EPHUOZ7btY4LezZSs+uHtBr+PeY29uz6eSzKtJQC+2RlKtn10xiSoiNo8P4I2n81l9o9BmFh56gRZ+fuQ5dJS9SvN0fP1Du/VcsWs27lcgZ9NpyZC5bg4OjI8CEDSEkueI5KT0vD3cOTvgM+xsHRUWvMzAVLWfX7TvVryozZADRo0lSv/P7eFMq/v6+hdd/BfDR5LlZ2Diwe/wXpqQVvv8fiIh+wc8kcfAOD8/1u45xpXD0dRuePRzLouwUEhFRn0TefkxAdqVd+QoiCPe85YMfOnUydNo33+/VjVWgoVatUYcDAgYSH5985B3D33j0GDhpE1SpVWBUaSr++fZkyZQq7d+ceXDt16hTDhg+nTevWrFm9mjatWzNs2DBOnzlTrBwXLlrE0mXLGDFiBMuXL8fRyYmP+vcnuZAxVpcc9F13bQzMzEi5cY1bs3/WKd7E1Y2y4yeRePYMZwd+QPiqFfj2H4R9vdfUMVaBQQSMGkvUnl2cHfA+UXt24T9qLJblirfz8UXefnnpVSC3bduWVq1aUbZsWcqWLcu3336LlZUVhw4dKrqzDq7+sZ+/xv3AxU1/6BT/4NR5zq3+ncgLV4i/fY8zoZu4tvtvfOrVUMcEd2/PgalzubpzH3E373Ds1xVc2/03tYf01Ts/lUrFzg2rePPt3lSv3xAvP3/e/2IMGelpHNpTcM6BIVWpXr8hHj6lcPXwolmHbniX9ufy2VMacYaGhtg5OKpfNnb2euVn/0Zb4g/8SfyB3WQ8uEfk6gUoY6Oxa9Bca7yZXzmU0ZHE7dmGMjqC1KsXidv/B2a+uUcazP3Lknr1IolH/iYzOpKU86dIOHJAI0ZXS1auouObrenUri2l/UoxfOhg3FxdWLVug9b41es34ebmyvChgyntV4pO7drSoW1rFi0PVcf8vn0n/Xr15PV6dfD29KBbpw7UrVWTxStCtS5TCFF8z3sOuL37b458O4MbW3bpFB91+gJX120l9uJVEm/f48rqLdzZcwD3utXUMZEnznJw7DSurt9GVob+Z73kpVKpuLBnM5VadMW3Sl3sPXyp9+6nZGakc+PovgL7Xf13N+kpSTT6aDQu/kFYObrgGlABBy/No6YKQ0PMbe3VLzNrW73z27BqBW/3fo/XGjbGzz+AL8aMIz0tjT1/7CiwX7mgCnzw8Sc0eqM5xsYmWmPs7O1xcHRSvw798zcenl4EV6mmNb6g/A5uXcvrHd+hQq3XcfXxo9OgESjT0zh9oOCzxQCys7JYM+NbGnftjYOLu8bvlOnpnD+8n+bvfEipoBAc3T1p3LU39i5uHPljs875CSEK97zngKVLl9KhQwc6duxI6dKlGTZsGG5ubqxes0Zr/Jo1a3B3d2fYsGGULl2ajh070r59exYvyT1LaNny5dSuXZu+ffvi5+dH3759qVmzJsuXL9c7P5VKxfLly+nXrx9NmzShTEAAE8aPJy01lW3btxfYT5cc9F13beLDjnBv8QJi//lbp3iX1m3JiIjg9rxZpN25TeSObUT9sR33zrk7mV3bdyL+eBjhq1aSdvcO4atWknDyOG4dOuuc12Mv+vbLq9jXIGdlZREaGkpycjJ16tQp7mKeKbeQILxrVeXW30fUbYYmJmSmpWvEZaam4VNX90n9scgH94mPiaZitZrqNmMTE8oFV+HKed32RKlUKs6dOEr4nduUq1RF43cP7t1hyFtt+axnR2Z/O4aI8Hu6J2dohJmPP8nnNYvulPMnMffXvpcn9dpFjOwcsayYc/qBobUt1tXqkHzmWG7M1QuY+fpjVirn1AdjJ1csK1XViNGFUqnk/MXL1K1VU6O9bs0anDxzVmufU2fOUbdmDY22erVrcv7CRZSZmQBkZCgxNdX8QmdmasqJU8XbMyiE0M2LOAc4BQfiVrMK4QeOPpflJ0U/JDUhFvfA3LHb0NgY1zIVibh+scB+d88cxtmvPIdD57J6eE82jx/ImR2ryc7O0ohLjLjPmpG9WD+mL/t/m0pi1AO98ntw/x4x0dFUr1lb3WZiYkJwlWqcP3OqkJ76USqV/LlzG83btEOhUOjcLzYinKS4GAJCqqvbjIxNKBUUwu1LhR+B+mvtEixt7KjWpHW+32VnZ5GdnY2RieZcYGxiyq2LMhcI8Tw86zlAqVRy4cKFfMuqU7s2p05pH79Onz5Nndq1Ndrq1q3L+fPnUSqVBcfUqVPgMgtz7949oqKiNHI0MTGhWvXqnDp5ssB+ReVQnHV/FqwCKxB/PEyjLf5YGBZlyqEwNHwUE0T88WP5YqwCK+j9fi/T9tPrGmSAM2fOUKdOHdLS0rCysmLDhg0EBRXvdOVn5ZOrB7BwcsDAyJB9E37ixKLV6t9d2/03tQe/x+0DR4i5fpvSjepSrk1T9Qevj/iYaABs7B002m3sHIiOKPyLTEpyEp+8/SaZygwMDAx59+PPNQrt0uUr8MGwsbh5eZMQG8PmFYuY8MkHTPx1BVY2RR9FMLSyRmFoSGZCnEZ7ZkI8ljZ2WvukXb9E+G8/4vHBZyiMjVEYGpF48ggPQ+erYxKP/oOhlS0+w74FhQKFoRGxe3cQs0P7Ud+CxMbFk5WVhaOD5lFxR0d7og/FaO0THR2No6NmQe3oYE9mVhZxcXE4OzlRt3ZNlqxYRbXKIXh7eXLo6DH+2n+ArOxsvfITQujmRZwDep7bi7mTAwojQ8Imz+TC0rXP5X1S42MBMLe202g3t7YjKabg07cTox6QFH2a0jUa0mTgVyRE3OfwqrlkZ2cR0uptAJz9ylKv16fYuHiSmhjHme2r2D79C978chZmVjY65RcTnTNH2TloniZt7+Cg9frh4vp3318kJSXRrHVbvfolxeWM9Va2mvOAla09cVHaL7UBuHXxDMf3bGPAtPlaf29qboF32QrsXbsUZ09frGztOf3PHu5evYCDm5deOQohCve85oDY2NhH3xM1v2M7OjoSFRWltU9UVBSOdetqxjs4kJmZmfM90dk5J+aJS0cKW2ZhHvfJl6ODA/cLOZW3qByKs+7Pgom9PfGxsRptythYDIyMMLK1RRkTg7G9A5mxmt/TM2NjMLbX7yxXeLm2n94Fcrly5Th58iRxcXGsW7eOXr16sW/fvgL/c6Snp5Oe/sQRXJUKIz32OhdlUZO3MLGywLNmFZqM/5yY67c4t/p3AHZ+PoE2s79lwKk/QKUi5vptTi5ZR+V3OxW53H//3MmiGVPUPw+dMB0ABU/mrqKo1TEzt2D8nMWkpaVy/kQYK+f9hLO7J4EhOUdvQ2rm2evhBwGBlfiid2cO/LGNFp3fLnoj5MlFgwJUT7Y9YuLuhetbfYn6fTUp505iaGuPS+d3ce3xIQ+X5FxfZl62Ao6tOvFwxa+k3riMibM7Lm+9R1Z8F6K3FuO0hSc2lEqVv00z/SfjVY8Wk9M+Yuhgvp44lTe7vYNCocDb04N2bVqx6fdt+ucmhCiSPnOAtvFfqcrGWPFsH6CwsVUPjC0tca0eQu2vPyP++m2urtPvBofaXD+yl0MrZ6l/btx/bM5fnhzHUBV6JFWlUmFmbUvtHgMxMDDE0SeA1PgYzu1ary6QPSvkHlW1B5z9yrPhq/e5fngPQU3aa13unzu38eOUieqfJ0yfoS09VCqVlnmr+Lb/vomatevi5OxcaNypv3exed736p/fGTnpUX5Pbj+ggPzSU1NY+9NE2n30OZaF7Czu/PFINsyeyrQPu2BgYIC7X1kq1W9C+PUrOq2TEEI3TzsHqLKzMTU1LXD5+cYHVeHjq7b4J9v1XeZjW7duZfyE3JsBzvz552IvT5c+xc3z6eSvGx69eUERhX5vz+tl3n56F8gmJibqO41Vr16do0ePMmPGDObNm6c1ftKkSYwbp3nTrYaG9jQydtAaXxxxt+4CEHHuMlYujjQYPVhdIKdExbC6a38MTU2wcLQn8f5Dmkz4gtibd4tcbpU69fEvn/sf/vHpGvGx0dg55t74KiEuFhu7wtfHwMAAV09vAHz9y3L/9k1+D12iLpCfZGpujlcpfx7cv1NkngBZSYmosrIwstHco2NkbUtWQrzWPg4tO5J67SKxf2zKabh3i4cr0vAZNpGoTSvJio/Fqd3bJBzaR/yj68My7t3GwNQU1579id62VuM/UGHs7WwxNDQkOlpzL1RMTGy+o8qPOTo6EvVkfGwcRoaG2NrmfFFysLfnp2mTSE9PJy4+ARdnJ36YNRdPD3dtixRCPCV95gBt438rU0famGm/cWBxJd7KuRwl5vxlzF0cqTFi0DMpkL2Da+JUqqz65+xHd+5PTYjFwjZ3zE9LjMfsiaPKeVnY2KMwNMLAIPfMJVs3L1ITYsnKVGJoZJyvj7GpGfYepUiIuF/gcuvUb0D5oErqn5XKDABio6NxdMotXuNiY7F3eDZz7sPwcE4cPcJXk6YVGVu+ej28AnLn0MzMnPwS42Kwts89GpAcH4tVAffciHlwn7jIByyfPErd9vgL8FfdmjBkxhIc3DxxcPOk7zczyEhLJT01BWt7R1Z9Pw57F7diracQQrunnQNGjxrFl19+mS/W3t4eQ0NDoh6dCfNYTExMvqOHjzk5OeU7QhgTG4uRkZH6e6LWmEKWmVfDhg2pVCl3jM3IyBnDoqKjcc6zgzAmNjbf0csi88yTQ3HW/VnIiI3F+ImzYo3t7MnOzCQzIQEAZWxMvhgjO3uUTxx51uZl3n5PvRtfpVLl2zuU18iRI4mPj9d4vWak/2F5nSkUGJnmv8lIVnoGifcfYmBkRGD7Flz+vfAbggCYW1ji6umtfnn6+mHr4MjZ47nXt2UqlVw6fYIyeb6k6ESlIvPRlxltlBkZ3L9zM9+pcgXKyiTt9jUsgjQfmWQRGELqNe3XxhmYmKLK1ixwVU+cmmxgYqr+MpI/Rve9MsbGxgSVL8vBI5rXBh48cpTKlSpq7RNSqUK++H8PHyEosDzGRpr7dkxNTXF1cSYzK4vdf+2j0ev1dc5NCFF8hc0B2sb/5qbPbueoNgqFAgMtc0BxGJtZYOPioX7ZuvtgbmNP+IWT6pisTCUPr5zFpXTBd/R09g8iMTJcY3xNeHgfc1sHrcUxQJZSSfyDO5jbFjxfWlha4untrX75+pXGwdGRY0cPq2OUSiWnTxwjqFLBj9PTx86tm7Gzt6dW3aLHWFNzCxzdPdUvF69SWNk5cO107jVvmUolN8+fwqec9uvZnDx9GPTdAgZMm69+lateF78KlRkwbT42ji4a8SZm5ljbO5KalMjVU0cpX6Pe062wEKJQ+s4BX3zxhdZYY2NjAgMDOXTwoEb7ocOHCQnRPn4FBwdz6PBhjbaDBw8SFBSEsbFxbswTNxE7eOhQgcvMy9LSEh8fH/XL398fJycnjRyVSiXHwsIIqVy5wOUUlUNx1v1ZSLpwDtsnbrRoU7U6KVcuocrKehRzPl+MbdVqJF0o+s7lL/P20+sI8qhRo2jZsiXe3t4kJiYSGhrK3r172bGj4Ltjmpqa5juVoqDTq40tLXDwz32WpF0pb1yDA0mNjSPhTjiNv/kcaw9XNvXL+c9V/cN3SLhzn6hL1wDwrludOp/042ieZ1x61gjB2sOVB6cuYOPpSoPRg1EYKPjn+1/0WXUg54tX8w7d+H3lYlw9vHDz9GZL6GJMTM2o3biZOm7e1HHYOzrTte8AALasXIxf2UBcPDzJVCo5feQg/+zezruDh6n7rPzlJ6rUro+jsxsJcbFsXrGQ1JRk6r/RSuf8Yndtwf29waTdukratUvYvt4MYwcn4vbl3GHbqUMPjOwcebDwJwCSToXh9m5/Uhs0J/ncSYxs7XHu9h6pNy6T9ehau6TTYdg3bUv6neukXb+CsYs7Tu3eJulUGKj0u8733be7MfLrCVQoX56QShVYs3Ez4Q8j1M81/nHWXCIio5j4dc6exa4d2xG6Zj1Tf/yZzu3acurMOdZv3srU8V+pl3n67DkiIqMoV7YMERGRzJm/gOzsbPr07K4tBSHEU9B3DtA2/hd2erWRpQW2pX3UP9v4euFYqTzpsfEk3Q2n1tihWHq4sOejnOfuVujXnaS74cRdvg6AW51qhAx6j7O/5D4iz8DYGPvyOXfdNzQ2xtLdFcdK5VEmpZBw47Ze669QKAhs/CZndq7BxsUDaxcPzuxYjZGJKX41GqjjDiz6Hgs7R6q27wVAuddacnHv7xxZ8yuBDduQEHGfMzvXUL5hG3WfsHW/4VWpJpYOzqQlxnNm+yqUaSn412qiV34dunVn5eIFeHp54+ntw8rFCzA1M6NxsxbquCnjxuLk7EzfAR8DOV9Qbt3I2YbKTCVRkRFcvXwJc3MLPL291f2ys7PZuXUzb7Rqg6GR3iegoVAoqNO6M/vXL8fRzQtHdy/2rV+GsakZwfVzHxe19ueJ2Dg406zH+xibmODqo3m3b3MLKwCN9isnj4AKnDy8iX5wj51L5+Lk4U3VRs/u+axC/L97FnNAWmpqgcvv2bMno0ePJqhCBUKCg1m3bh3h4eF06Zxzx+QZP/1EREQE3z46bbdLly6EhoYybfp0OnXsyKnTp9mwYQNTJk9WL7NH9+6817cvCxYupFHDhvy1dy+HDx9m4cKFeq+/QqGgR48e/Pbbb/j4+uLj48Nv8+djZm5OqzzPgh795Ze4uLgwZPBgnXMoat11YWBmhpmHp/pnUzd3LEr7k5mYSEZkBF59+mHi6MT16TnbJ2LrFlzfbI/PB/2J2L4Vq8AgnJu35Nrk3NOiH25cT+D0H3Hv8haxB//Bvk49bKpU48Jng1+57ZeXXjPcw4cP6dmzJ+Hh4dja2hIcHMyOHTt44403ivXmT/KoWolef+Tesrv51NEAnFy6js0fDMfKzRlbbw/17xUGChp/8zl2pbzIzswi9vpt/hwzjWPzV6pjjExNafTVUOz9vMlISubKzn1s6Ps56fGJxcqxVdd3yEhPZ8nM6aQkJlK6fBBfTPoRcwtLdUxMxEMM8nwJTE9LY8nP04iJisDE1BR3b18+HP41tRrmfiGIjYxkzsSvSEyIw9rWjoDAioydMR8nV91PFU4M+wdDS2ucWnfF0NaejPu3ufvzt2TG5DwH0sjWHuM8z0ROOPgXBmbm2DVqiXOX3mSnJJNy8QyR65eqY6K3rgGVCqd23TGycyArKYGkU2FEbdT/9vgt3mhCXHwCcxcsIjIqmoDSfsz+YSoe7jmnwEVGRxP+MPdGLV4eHsz6YSrTfvyZ0LUbcHFyYuRnQ3ijccPcbZuRwc9zf+Xu/XAszM15rW5tJn49Bhtra73zE0IU7nnPAS5VKtLu99wdnPUmjgTg4ooN/DVgJBZuzlh55Z0DDKg99lOsfXPmgISbtzk87jvOLVyljrF0d6Hr3xvVP1ce3JfKg/ty78ARNrd5V+8cK7zRicyMDA6HziE9JQnnUmVp+vE3GJtZqGOSYyNRGOTuCLZ0cOaNj7/h6Nr5bP72YyzsHAls1JYKzXLvhZESF83fC6eTnpSAqZUNzn7laPnFdKyeOEJalG7v9CIjPZ2fp08mMTGR8kEVmfzjLCwsc+eoiIcPNPKLjoqkf6/cnYprVixlzYqlBFepxnezc3cmHz96mIgHD2jRpp1eOeX1Wru3yMxIZ8v8H0lLTsQrIJBeX07D1Dx3+8VHRWjMobpIS0lm14r5JERHYm5lTYVar9P07b7FKuSFENo97zmgRfPmxMfF8cu8eURGRREQEMCsmTPx8MgZ96MiI3mQ52ZOXp6ezJo5k2nTp7Nq1SqcnZ0ZPnw4TZvmfr+uXLkyUyZPZuasWcyaNQtvb2+mTJlCcCU9z/x8pE/v3qSnpTFx4kQSEhKoVKkSc+bMwTLPGPsgPByDPAcDdcmhqHXXhWXZcgRO/UH9s++HOQfqInft4MZ3UzF2cMDEJXdOyXj4gMtjRuLz4UBc2rRDGRPNrTkzNR4TlXThHFcnjcer13t4vtuH9PD7XJs0nuRLBT+5oTAv8vbLS6F68vzZ/8A35gH/9VvqpdnFI0UHlSD7b/uVdAqF8ps6t6RTKJSJnX5fOIUQz84cu4JPRX5RxKx7sZ+d27NK8Sb8/8qhuwklnUKhuga/2NtPiFdZYUeQRdFOd8j/qLsXTfCGp78HyPNkZm5eZMyzvZWoEEIIIYQQQgjxkpICWQghhBBCCCGEQApkIYQQQgghhBACkAJZCCGEEEIIIYQApEAWQgghhBBCCCEAKZCFEEIIIYQQQghACmQhhBBCCCGEEAKQAlkIIYQQQgghhACkQBZCCCGEEEIIIQApkIUQQgghhBBCCEAKZCGEEEIIIYQQApACWQghhBBCCCGEAKRAFkIIIYQQQgghACmQhRBCCCGEEEIIQApkIYQQQgghhBACAIVKpVL912+aee/Cf/2WelkW3LGkUyjUqKaDSzqFQhmZW5V0CoW6vahnSacgxP+tk/fiSjqFItn9NKSkUyiU56djSzqFQiVaupd0CoVysLYo6RSE+L+Vlppa0imI5+x0h9YlnUKhau7YU2SMHEEWQgghhBBCCCGQAlkIIYQQQgghhACkQBZCCCGEEEIIIQApkIUQQgghhBBCCEAKZCGEEEIIIYQQApACWQghhBBCCCGEAKRAFkIIIYQQQgghACmQhRBCCCGEEEIIQApkIYQQQgghhBACkAJZCCGEEEIIIYQApEAWQgghhBBCCCEAKZCFEEIIIYQQQghACmQhhBBCCCGEEAKQAlkIIYQQQgghhADA6Gk6T5o0iVGjRjFkyBB+/PHHZ5LQyk3bWLhqI5HRsQSU8mbEwL5UC66gNXbX/oOs2rKDi1dvkKFUElDKhwG93qJ+jSoacX/s/5efF67gzv0HeHu4MeS9d2j6Wm29c3OtU52Kg97DsXIFLNxc2NNzELe3/VlgvE+bNyjf5y0cKpbHwNSEuItXOTllJvf/+kcjLujDdyn33ltYerqTHhPLzc1/cHz892SlZ+idI0DLmn70bBpEsJ8zDjbmvDFsNeduRRfap3vjQLq8Xo5y3g4AnLkRyaSVhzl5LUIdY2lmzLBuNWlZww9HW3PO3YhizOIDnLoWqVd+Lap506NhWSqVcsDB2owWY3/n/O3YQvu83SCATnVLU87LLie/mzFMWXuCUze0r9fA1hUZ3qUKv/1xgXErwvTKTwihm+cxB6hUKtYuns+fWzeSlJhImcAKvDf4C7z9ShfY5/D+v9i4YhEP7t0lKysTN09v2nTpzuvNWqljzp86wZZVy7hx5SKx0VF8/s1UatRvoHd+1rUbY9OgFUbWtmQ8vE/MluWk37xcYLxl5TrYNmiFkZMr2WmppF4+Q+zWlWSnJKtjLCpWx65ZR4wdXVBGRxC3cx0p547pnRtA6IbfWRi6jsiYGAJK+TJ80AdUC6moNTYyOoZps37l/OWr3Lp7nx6d3mTExx9qxPQeMpywk2fy9X2tdg3mTBmnd34qlYrffpnHpg3rSEhMpEKFinw+fCSl/f0L7ffXn7v5Ze5s7t29i6eXFx8OGETDRo3Vv+/QthUPwsPz9evYpStfDB+pd55CiMI9j/EfYNWqVSxavJioqCj8/f0Z9sUXVK1atcD4sLAwpn/3HdeuXcPZ2ZnevXvTtUsXjZjdu3cza/Zs7ty5g7e3N4MGDaJJ48YFLPHlzk+lUjF37lzWrV9PQkIClSpWZOTIkQQEBBTaT5cc9F33J1lXDMatczcsy5TBxNGJy+PGEHfwn8L7VArG54MBmPuWIiM6ivA1q4jctkUjxr7ea3i92wdTdw/Sw+9zd/ECYv89oHNe2hT7CPLRo0f55ZdfCA4OfqoE8tr+1wEmz1rABz26sPaX76laKYgPR4zn/kPtBVjY6XPUqRbCnEljWDP3O2pWrsjA0d9y4cp1dczJcxf5/JvpvPlGQ9b/+iNvvtGQz76ZxukLBX+hKYiRhTkx5y5xaPgEneLd6lTn/t5/2fXWh2xp3JkHBw7TZMVsHCoFqmNKd25DtbFDOTl1FhvrtOafwV/i16ElVccM1Tu/xyxMjTl66QETVx7WuU/dCh5s/PcKXb7ZxJtj1nMvKpGVo9vgZm+pjvnuw4a8XsmLj2f9SZPPV7Hv9B1WfdlWI0a3/IwIuxLB5DUndO5Tu7wbmw7fpNuUXbSfsIN70cks+6Iprnbm+WKD/Rx5u2EZzt+O0SsvIYTunsccALA5dClb166gz8efM3HOQmwdHPh22Mek5ikon2RlY0OHHn0YP3M+U39dTsMWbZgzdQInjx5Sx6SnpeLrX4Y+H39e7Nwsgmvi0LYH8Xu2cP+nsaTfvITre59haOegNd60VBmcun1A4tH93P9+FJHLZ2Lq5Ydjp765MT7+OHcfQPLxf7n/4xiSj/+Lc48BmHgXvEOgINv37GPyzF94v2c31vz6M1WDK/DR8LGEP4zQGp+RocTezpb333mLcv5+WmNmjP+SveuXqV8bF83B0NCA5g3r650fwLLFi1i5YhmfDRvBgsXLcHR0ZMjAj0hOLvjzPXP6FGNGjaBFq9YsWbmKFq1a8+WI4Zw7m1u4L1iyjN937FK/ZsyaA0CTJm8UK08hRMGe1/i/Y+dOpk6bxvv9+rEqNJSqVaowYOBAwrXs/AK4e+8eAwcNomqVKqwKDaVf375MmTKF3bt3q2NOnTrFsOHDadO6NWtWr6ZN69YMGzaM02fy7/h72fMDWLhoEUuXLWPEiBEsX74cRycnPurfv9AxVpcc9F13bQzMzEi5cY1bs3/WKd7E1Y2y4yeRePYMZwd+QPiqFfj2H4R9vdfUMVaBQQSMGkvUnl2cHfA+UXt24T9qLJblyuucl9Zci9MpKSmJHj168Ouvv2Jvb/9UCeS1eM0mOrVsSufWb+Dv683IQf1wd3Fi1eYdWuNHDupH37c6Uql8GXy9PPikX098Pd356+BRdczSdVuoU70y73fvTGkfL97v3plaVYNZsnaL1mUW5t6ff3Ni4gxu/75Lp/gjoydx9uffiD5xlsTrtzg+4UcSrt/Gu3kjdYxzjco8PHKcG+u2knTnPvf3/sv1dVtxqqz9qLku1v19mR/WHWP/mbs69xn0858s/uMc525Fc/V+HJ/P24eBQkH9Sp4AmBkb0qpWaSYsP8jhC+HcfJjAd2vDuBORyLvN9Mt1/b83mLH5DAfO6/6fasi8Ayzdc5nzt2O5Fp7A8IWHMFBA/SB3jTgLUyN++rA+IxYeJD6leEfghRCFe15zgEqlYtu6UDr06EOt1xvh4+fPwOFfkZ6WxoE/dxbYr0LlatR8rSFevn64eXrRqtNb+JQO4NKZk+qYKrXq8lbfj6j1eqMCl1MU29dakHh0P0lH96GMCCdmywoy42Owrt1Ea7ypTwCZsVEk/ruLzNgo0m9eIfHwX5h6lVLH2NRvTurVc8Tv/R1lZDjxe38n7ep5bOo31zu/Jas30LFVMzq3aYF/KR9GfPwhbs7OhG7aqjXe092VkYM/ol2LJlhZad/RaWtjjZOjg/p1MOwEZqamNGv4mtb4wqhUKlatXEHvPn1p2LgJ/gEBjBk3nrS0NP7Ysb3AfqtWrqBGrVr06tOXUqX86NWnL9Vr1mTViuXqGHt7BxydnNSvfw78jaeXN1WqVdM7TyFEwZ7X+A+wdOlSOnToQMeOHSldujTDhg3Dzc2N1WvWaI1fs2YN7u7uDBs2jNKlS9OxY0fat2/P4iVL1DHLli+ndu3a9O3bFz8/P/r27UvNmjVZvny51mW+zPmpVCqWL19Ov379aNqkCWUCApgwfjxpqals217wGKtLDvquuzbxYUe4t3gBsf/8rVO8S+u2ZEREcHveLNLu3CZyxzai/tiOe+eu6hjX9p2IPx5G+KqVpN29Q/iqlSScPI5bh84656VNsQrkgQMH0rp1a5o2bfpUb55XhlLJ+cvXqFu9skZ73eqVOXnuok7LyM7OJjk1FVtrK3XbyfOXqFtNc5n1qlfReZnPlEKBsZUF6XFx6qaIQ8dxCqmAU9VKAFj5euH1xuvc3bXvv88vD3NTI4yMDIhLSgfA0NAAI0MD0pVZGnGpGZnULOdWAvkZYmxoQFxyukb7hJ412XPqHgfOP/jPcxLi/8XzmAMAIsLvExcTTXD1Wuo2YxMTgkKqcPmcbnvTVSoVZ44fJfzuLQKDqxTdQVeGhph4liLtylmN5rTLZzHz1X7qWvqtKxjZ2mNeLucoi4GVDZaVapB68ZQ6xtQ3gLTLmstMLWSZBVEqlZy/fJW6NTRPd6tbowqnzl7Qa1mFWb91Jy0bN8DC3Ezvvvfv3SM6Ooqateuo20xMTKhStRpnTp8qsN/Z06epWauORlut2nUK7KNUKtm5bRtt3myHQqHQO08hRMGe1/ivVCq5cOECdepo/l+vU7s2p05p/79++vRp6tTWvGSybt26nD9/HqVSWXBMnToFLvNlzQ/g3r17REVFaeRoYmJCterVOXXyZIH9isqhOOv+LFgFViD+uOZlkvHHwrAoUw6FoeGjmCDijx/LF2MVWPwDjVCMa5BDQ0M5fvw4R48eLToYSE9PJz1ds4gxTM/A1NREoy0uPpGs7Gwc7e002h3tbYmKKfz61McWrd5Ealo6LRrWU7dFxcTh6GCruUwHW6JidVvms1RhYB+MLCy4uTH3iPiNDdswdbKn5dZlKBQKDIyNubhgJWdmzP/P88trdPfaPIhJ5u9HR6GT05SEXXrAJx2rceVeLJFxqbSvF0DVAFduPIj/z/Mb0aUqD2JTNI5Ct61Vioq+DrT9Ztt/no8Q/y/0mQO0jf8Z6emYmJpqjY+LybmngK295inLtvYORD4sfKdXSlISH3VtQ6YyAwMDQ/p+8oVGof20DC2sURgakpWkOd5lJcVjaG2rtU/6ratEhs7FuccAFEbGKAyNSDl3nOhNy3KXa2Wr1zILEhufQFZWNo4Odhrtjvb2Os+hRTlz4RJXbtzim+GfFKt/dHQUAA6Omp+vg6Oj1uuH8/ZzcHTM1yc6Wvs9KPbt/YukpERat21brDyFENo9ixpAlZ2NqZY5IDY2lqysLBwdNMcHR0dHoqKitC4/KioKx7p1NeMdHMjMzCQuLg5nZ+ecmCfGj8KWWZAXPb/H7/f4PZ58z/uFjLFF5VCcdX8WTOztiX+iXlPGxmJgZISRrS3KmBiM7R3IjNW8pDIzNgbjpzy7Qa8jyHfu3GHIkCEsW7YMMzPd9h5PmjQJW1tbjdeUmb8UGP/kzl6VCp32AG/9cz+zl4Ty3ZjP8xXZCp5cqJa258yvYysqDxvIvn5DSYvK/SDd6tUg5NMPOfTFeDY36sSedz/Gq1kDgj/rr9NyO9Qvw5XF/dSvmuXdi+5UhAFvVqZdvQD6fbdD44jxx7P+RKFQcGJuL24u/4C+LSux4Z8rZGVnF7is9nX8uDD3LfWrZlmXp87vo5ZBtKtVig9+3ke6Mue93R0s+Lp7dYb88o+6TQjxbOk7B2gb/xfM/EH9+7937+DdVg3Vr6ysTCD/mK/LPGBmYcHUX5cycc4iuvX9iCWzZ3DuZPFudFUoleqJBoWWthzGLh44vPkOcbs3cf+nr3nw2zSMHJxx7NjriWU+2bPgZRblyblNheqZHUVdv/UPyvj5UimwnE7xO7dvo/FrddWvzMyCPl9V/sn/Cfl+qyp4vX7ftJHadevh7Pz0840QIsezqgGmTZtWaB9t40NhY5jW8eSJdn2X+bLkt3XrVmrXqaN+FTbGFrU8Xfo8y+2ouyfmwsdvl2eOzD+FPn1Oeh1BPnbsGBEREVTLc01PVlYW+/fvZ+bMmaSnp2P46JD3YyNHjmToUM0bThlG3ci3bDtbawwNDIiKidNoj4mLz1fwPmn7XwcYO30m3381jDrVQjR+5+Rgl2+Z0bFFL/NZKtW+JfVmTGDve58Svu+gxu+qjBzMtdWbubJsLQBxF65gZGFO3e/Hcfr7uUV+Sfoj7CYnrjxU//wgpuCL8HXxUZsQPm5flW4TtnDhiZtc3XqYQKdxmzA3NcLa3ISIuBTmDnmD2xGJBS5v14k7nLiWu3fpQWzKU+X3QYsgBratRI+pu7h4N07dXqmUI8625mz9OveutUaGBtQq60qvJuUI6LeC7GJ+4RRC5NB3DtA2/l+MSlX/vXrd1yiT5zQoZUbOKWdxMdHYOzqp2xPiYvIdVX6SgYEBbp7eAJQKKMu92zfZuGIxFSo/m2tQs1ISUWVlYWhtp9FuaGVDVlKC1j62jdqQfvMKCftzrv1SPrhDdMZi3Pt/SdzOdWQlxms9WlzYMgtib2uDoaFBvqPFMbFxz2S+S01LY/uefQx87x2d+9R/vQFBFXPvoP34842OisbJyVndHhsTg4NDwZ+vo6NTvqPFMQX0CQ+/z9Ejh5k0dbrOeQohivasagBVAQdV7O3tMTQ0JErL//Unj24+5uTklO8IZkxsLEZGRtja2hYcU8gyC/Ii5tewYUMqVaqk/jkjI+feO1HR0Tg7546xMbGx+Y7+FplnnhyKs+7PQkZsLMZPzP3GdvZkZ2aSmZAzRypjY/LFGNnZo3zKM4X1OoLcpEkTzpw5w8mTJ9Wv6tWr06NHD06ePJnvPwaAqakpNjY2Gq8nT68GMDE2JqisP/8eO6nR/u+xk1SuUPCdyLb+uZ/RU35i6uihNKhdPd/vKweV46Cey3yW/Dq2ov7Miez/8Aut1xUbmpur9yY9psrKAoVCp70yyWlKbj5MUL/SnrhGWB/921bmk07V6DFpK6evF/zoptT0TCLiUrC1NKFBiDc7w/Lv8MjNL5NbEYnq15PXMOvjw5ZBDH6zEu9+9yenb2oW7/+cD6fp6C20GLtV/Tp1PYqNh27QYuxWKY6FeAb0nQO0jf95T682t7DEzdNb/fIq5YedgyOnjx1Rx2QqlZw/dYKyFSqhF5WKzEfXeD0TWVlk3LuJWRnN65rMylQg7dZVrV0Uxib5d3KqvxzmjO/pt67mX2bZigUusyDGxsYElQ3gYJjm0wEOhp0gpGJgAb10t/Ovv8lQKmn7hu6PHrG0tMTb20f98itdGkdHJ44ezr27uFKp5MTxY1QKDilwORWDgzX6ABw5fFBrn62bN2Nv70Dd+vrfREwIUbBnVwNov8TG2NiYwMBADh3UPJB06PBhQkK0jw/BwcEcOqz5xJaDBw8SFBSEsbFxbswhzfHj4KFDBS6zIC9ifpaWlvj4+Khf/v7+ODk5aeSoVCo5FhZGSOXKBS6nqByKs+7PQtKFc9hW0dzJbVO1OilXLuXUSkDShfP5YmyrViPpwrmnem+9jiBbW1tTsaLm8xQtLS1xdHTM114cvbq0Y8SkH6lYLoCQoHKs+f0Pwh9G0a1tzt08f/h1KRFR0Uwa+QmQUxyPmjyDEYP6EhxUjshHe87NTEywfnRHznc6tqXXJ6OYv3I9jevVZM8/Rzh07BRLf5qkd35GlhbY+Pmof7by8cKhYnnSY+NJvhdO1TGfYuHuyoEBI4Cc4vi12ZM5PGoSkWGnMHfJOSKSmZqGMjEJgLs7/yJoQG9iTl8g8tgprEv7UmXkYO7s+KvAvWxFsbM0xdPJCtdHj1/y97ADICIuhcj4nKM3MwY25kFMMpMePQpqwJuV+aJrTQb+tJs7EQk42+Y8Pik5TUlKes4pGw1CvFEA1+7H4edmy5h36nDtfhyr9l7SKz9bSxM8HS3Vj2jyd7MBIDI+lcj4NAB+eL8uD2JTmbI258veRy2D+KxjZQbPO8DdqCScbc0e5ZdJSnomyWmZXL4Xp/E+KRmZxCal52sXQhTP854DFAoFrTq9xcbli3D39MbNy5uNyxdhamZG/Sa5d3WeOelrHJyc6f7+QAA2rFiEf9lAXD28yMxUcuLwv+z/Yxt9Pxmu7pOWmsKDe7l39o8Iv8/Nq5exsrbByVW3Gw3G/70D524fknH3Bum3r2JVsxFGdo4kHtoDgF2LLhjZ2BO1OucyotQLJ3Hs1Afr2o1JvXwGQ2s7HNp2J/32NbIS4wBI+OcP3D4chU2DVqSeP4F5UBXMA4IIn/Ot3tvv3a4dGPntd1QoV4aQCuVZ+/sOwiMi6fZmzpk1P/yykIjIaCaNzn3U1cUr1wBISU0lNi6ei1euYWxsjH8pH41lr9/6B43r18HO1kbvvB5TKBR0e7s7ixf+hpdPTtG8eOFvmJmZ0axFS3XcuLFf4uziwoBBgwHo+tbbDPigH0sXLeS1hg35e+9ejh4+wrzfFmgsPzs7m61bNtGqTRuMjPS+xYoQohDPe/wH6NmzJ6NHjyaoQgVCgoNZt24d4eHhdOmcc0fiGT/9REREBN9OyHncapcuXQgNDWXa9Ol06tiRU6dPs2HDBqZMnqxeZo/u3Xmvb18WLFxIo4YN+WvvXg4fPszChQtfufwUCgU9evTgt99+w8fXFx8fH36bPx8zc3NatcwdY0d/+SUuLi4MGTxY5xyKWnddGJiZYebhqf7Z1M0di9L+ZCYmkhEZgVeffpg4OnF9es72idi6Bdc32+PzQX8itm/FKjAI5+YtuTY593G7DzeuJ3D6j7h3eYvYg/9gX6ceNlWqceGzwXpvv7xeqBmkZaP6xCUkMGfJKiJjYilTyoe5k8bg4ZZzHVFkTAzhEblHNtf8vpPMrCwmzPiFCTNyr2tu17wRE4cPAaBKxfJMG/M5Py9Yzs8LV+Dj4cb0MZ8THFhW7/ycKlegxebcW7PX/DanEL66cgMHBo3CwtUZK8/ca4DL9eqGgbExdaaNpc60ser2x/EAp76bi0qlosqowVi4u5IWHcOdnXs5MeFHvfN7rFn1Uvw4IHcv/9xPmgHw3ZqjfLc2525wno5WZGfnHtno9UYFTI0Nmf+Z5qNF8vaxMTdh5Nu1cHe0Ii4pjW2HrzM59AiZWfoV8m9U8eL7frk3Ups14HUAfth4ih82ngbAw9GSPOnRs0k5TI0NmTeogcay8vYRQrz83nyrJxnp6fw2YyrJiYkEBFZg1NSfMLfIfQxRdMRDDAxyT4BKT03jtxlTiY6MxMTUFE9vXwaNGkfdRrnPwL126QLfDB2g/nnJnB8BaNC8NQOG547PhUk5fYQYCyvsmrTD0MaOjAf3eLjwe7Lick47M7K2xSjPM5GTjh1AYWqGdd2m2Ld+i+y0FNKuXiB2++rc3G9dJXLlbOybdcK+WSeUMRFELp9Nxp3r+m04oGXjBsTHJzJ3yQoio2Mo41eKOVPG4eHmCkBUdKzGHArQud/H6r+fv3SVrbv34uHmwh+rFqnbb965y/Ez5/hl+gSe1ju9epOens70yZNITEwgqGJFfpw5B0vL3M/34YMHGp9vcEhlvvl2EvPmzOaXubPx9PJmwqTJVKioeVbB0SOHefDgAW3ebP/UeQoh/nstmjcnPi6OX+bNIzIqioCAAGbNnImHhwcAUZGRGjf08/L0ZNbMmUybPp1Vq1bh7OzM8OHDNe6wXblyZaZMnszMWbOYNWsW3t7eTJkyheBKep6V9BLkB9Cnd2/S09KYOHEiCQkJVKpUiTlzNMfYB+HhGOQ5S1WXHIpad11Yli1H4NTc+5D4fpgzJ0fu2sGN76Zi7OCAiUvuvSMyHj7g8piR+Hw4EJc27VDGRHNrzkyNx0QlXTjH1Unj8er1Hp7v9iE9/D7XJo0n+dLTPa1IoXry/N7/QOa9Z/fIiedhWXDHkk6hUKOaPt1ekefNyNyq6KASdHtRz5JOQYj/WydfgjM67H4aUtIpFMrzU90K+pKSaPn0N4t8nhysLUo6BSH+b6WlphYdJF5qpzu0LukUClVzx54iY4r1HGQhhBBCCCGEEOJVIwWyEEIIIYQQQgiBFMhCCCGEEEIIIQQgBbIQQgghhBBCCAFIgSyEEEIIIYQQQgBSIAshhBBCCCGEEIAUyEIIIYQQQgghBCAFshBCCCGEEEIIAUiBLIQQQgghhBBCAFIgCyGEEEIIIYQQgBTIQgghhBBCCCEEIAWyEEIIIYQQQggBSIEshBBCCCGEEEIAUiALIYQQQgghhBA5VC+5tLQ01VdffaVKS0sr6VS0kvyezouenxCi5LwM48OLnqPkJ4R4Wb3o44Pk9/RKKkeFSqVSlXSR/jQSEhKwtbUlPj4eGxubkk4nH8nv6bzo+QkhSs7LMD686DlKfkKIl9WLPj5Ifk+vpHKUU6yFEEIIIYQQQgikQBZCCCGEEEIIIQApkIUQQgghhBBCCOAVKJBNTU356quvMDU1LelUtJL8ns6Lnp8QouS8DOPDi56j5CeEeFm96OOD5Pf0SirHl/4mXUIIIYQQQgghxLPw0h9BFkIIIYQQQgghngUpkIUQQgghhBBCCKRAFkIIIYQQQgghACmQhRBCCCGEEEII4CUukPfv30/btm3x8PBAoVCwcePGkk5JbdKkSdSoUQNra2tcXFxo3749ly5dKum01ObMmUNwcDA2NjbY2NhQp04dtm/fXtJpFWjSpEkoFAo++eSTkk5FCPGCkDmg+GQOEEK8zF7k8R9kDnjWSmIOeGkL5OTkZEJCQpg5c2ZJp5LPvn37GDhwIIcOHWLXrl1kZmbSrFkzkpOTSzo1ALy8vJg8eTJhYWGEhYXRuHFj2rVrx7lz50o6tXyOHj3KL7/8QnBwcEmnIoR4gcgcUHwyBwghXmYv8vgPMgc8SyU2B6heAYBqw4YNJZ1GgSIiIlSAat++fSWdSoHs7e1V8+fPL+k0NCQmJqrKlCmj2rVrl6pBgwaqIUOGlHRKQogXkMwBT0/mACHEy+hFH/9VKpkDiqsk54CX9gjyyyQ+Ph4ABweHEs4kv6ysLEJDQ0lOTqZOnTolnY6GgQMH0rp1a5o2bVrSqQghRLHJHFA8MgcIIV4FMgcUT0nOAUb/+Tv+n1GpVAwdOpT69etTsWLFkk5H7cyZM9SpU4e0tDSsrKzYsGEDQUFBJZ2WWmhoKMePH+fo0aMlnYoQQhSbzAHFI3OAEOJVIHNA8ZT0HCAF8nM2aNAgTp8+zYEDB0o6FQ3lypXj5MmTxMXFsW7dOnr16sW+ffteiP8cd+7cYciQIfzxxx+YmZmVdDpCCFFsMgfoT+YAIcSrQuYA/b0Ic4BCpVKpSuSdnyGFQsGGDRto3759Saei4eOPP2bjxo3s378fPz+/kk6nUE2bNsXf35958+aVdCps3LiRDh06YGhoqG7LyspCoVBgYGBAenq6xu+EEP/fZA54ejIHCCFeRi/q+A8yBxTXizAHyBHk50ClUvHxxx+zYcMG9u7d+8L/p4CcnNPT00s6DQCaNGnCmTNnNNr69OlD+fLlGT58uHwxEkK80GQOeDoyBwghXmYyBzydF2EOeGkL5KSkJK5evar++caNG5w8eRIHBwd8fHxKMLOci8pXrFjBpk2bsLa25sGDBwDY2tpibm5eorkBjBo1ipYtW+Lt7U1iYiKhoaHs3buXHTt2lHRqAFhbW+e7TsPS0hJHR8cX6voNIUTJkTmg+GQOEEK8zF7k8R9kDnhaL8Ic8NIWyGFhYTRq1Ej989ChQwHo1asXixYtKqGscsyZMweAhg0barQvXLiQ3r17//cJPeHhw4f07NmT8PBwbG1tCQ4OZseOHbzxxhslnZoQQuhE5oDikzlACPEye5HHf5A54FXwSlyDLIQQQgghhBBCPC15DrIQQgghhBBCCIEUyEIIIYQQQgghBCAFshBCCCGEEEIIAUiBLIQQQgghhBBCAFIgCyGEEEIIIYQQgBTIQgghhBBCCCEEIAWyEEIIIYQQQggBSIEshBBCCCGEEEIAUiALIYQQQgghhBCAFMhCCCGEEEIIIQQgBbIQQgghhBBCCAFIgSyEEEIIIYQQQgBgVBJvalrtfQyMTFAYGGJonPOngZGxus3gUZuhkUm+NgMjEwwMFBgYGmBoZIDCQIGh4aM/jfL8Xd1mgIGhQt3HwECBkZEBJkYGGBooMH30p4mRobrNxDD3d+q2PH+aGBpgoFBgbKjAUKHA2ECBkaEBhgowfvw7gzy/N1Q8ajPA2FCBQgGGCgUGj/40NAAFYGigwODRn49jDBXkxBko1DGK7CwUqmzIzgJVNorsTMjOhOxHf1epcttU2SiynmjLzkKVqcz5U6lElZkB2dm5fyozcn+vjsuATCWq7CyylZmosrLJVmaSlaFElZ1NdkYmquxssjIy1b/PUscpyc7IJPtRH1WWiixlFtlZKrIzssjKyCI7W0VWRlbO7zKyyFJm5ywjI/vRcrPVv1dmZ5OlgoxsFRnZKrJUKjKyefTn4zZQqlT52jKyVcxV3SyJf/ZCCMCkynvqsfzxHJDzdwON8d7QyEQjzsA4dz4wNDJAocgZ3/OO9QoDMDQ0wMAoZxw2MDJ4NPYrNPvkGdNzx3kDjTnAVNvYn+f3j+cAY4OcsT/vHGBsoNCcIx7FPW5T5Bn7DdCcA3LnBnLyfTT+P54vFApy5oC8Y70qG7IzH431OXOD4nHbo7khb9vjsV2lfGLsz8xApXxi7M9UQmYGqqwsjTlAPc7nmQOy8swNj+eA7Dy/z1bPG1motIz52VnZZGfk/JmlzCY7I2eeyFLmicvMVo/rmvMAeeaD3DngyTaZA4QoWXnnAANjEwzU47yBuu1xDaCOMzJBYWioMQcU+n0/zxyQ83s05oC847qRenw31K0GMDJQf/c3MMj9bv/4u7+hgUJjDjA2MMDQAI054PFYnncOULflmQPyfvd/PAcYoMr97q/1+/6j8f5xW9454FGbtu/2eesCMjNQZWdr/vlobsjOVGqO8xlKLd/7M3PG/OxsjTkgS90ndw7Iynj0fT/PHJC3Rng8B6j/nmcO0Bz7n6wLVGSTvy1LhU5zgBxBFkIIIYQQQgghkAJZCCGEEEIIIYQApEAWQgghhBBCCCEAKZCFEEIIIYQQQghACmQhhBBCCCGEEAKQAlkIIYQQQgghhACkQBZCCCGEEEIIIQBQqFQqVUkn8Tykp6czadIkRo4ciampaUmn88y8iuv1Kq6TEKJkvarjyqu4Xq/iOgkhStarOK68iusEL+Z6vbIFckJCAra2tsTHx2NjY1PS6Twzr+J6vYrrJIQoWa/quPIqrteruE5CiJL1Ko4rr+I6wYu5XnKKtRBCCCGEEEIIgRTIQgghhBBCCCEEIAWyEEIIIYQQQggBvMIFsqmpKV999dULc7H3s/IqrteruE5CiJL1qo4rr+J6vYrrJIQoWa/iuPIqrhO8mOv1yt6kSwghhBBCCCGE0McrewRZCCGEEEIIIYTQhxTIQgghhBBCCCEEUiALIYQQQgghhBCAFMhCCCGEEEIIIQQgBbIQQgghhBBCCAH8HxXI3377LXXr1sXCwgI7O7uSTqdYZs+ejZ+fH2ZmZlSrVo2///67pFN6Kvv376dt27Z4eHigUCjYuHFjSackhHgFvQrjP8gcIIQQxSFzwIvpRZ4D/m8K5IyMDLp06UL//v1LOpViWbVqFZ988gmjR4/mxIkTvPbaa7Rs2ZLbt2+XdGrFlpycTEhICDNnzizpVIQQr7CXffwHmQOEEKK4ZA54Mb3Ic8D/3XOQFy1axCeffEJcXFxJp6KXWrVqUbVqVebMmaNuCwwMpH379kyaNKkEM3s2FAoFGzZsoH379iWdihDiFfWyjv8gc4AQQjwtmQNeXC/aHPB/cwT5ZZaRkcGxY8do1qyZRnuzZs34999/SygrIYQQ/wWZA4QQ4v+XzAH/PSmQXwJRUVFkZWXh6uqq0e7q6sqD/7V3xziJhAEUgB/RUFmZqcWCEyiNpzB2NoTWwooTeAkar0JB6CnmACQmUxkLKlozW63JijGuigPO9yVTzITiJST/y5sCHh8bSgXAT9ABAO2lA37eXg/ku7u7dDqdd6/FYtF0zG/T6XT+ua/reuMZQBu07fxPdADAXzpAB2zTYdMBvuL29jbX19fvfub09PRnwmxRURQ5ODjYeEv09PS08TYJoA3acv4nOgDgNR2gA7ZprwdyURQpiqLpGFvX7XZzfn6e6XSaq6url+fT6TSXl5cNJgNoRlvO/0QHALymA3TANu31QP4fVVVltVqlqqo8Pz+nLMskSb/fz9HRUbPhPmA8Hmc4HGYwGOTi4iL39/epqio3NzdNR/u09Xqd5XL5cv/w8JCyLHN8fJyTk5MGkwG/yb6f/4kOAPgsHbCbdroD6pYYjUZ1ko1rNps1He3DJpNJ3ev16m63W5+dndXz+bzpSF8ym83e/E5Go1HT0YBf5Dec/3WtAwA+Qwfspl3ugNb9DzIAAAC8Za9/xRoAAAC+i4EMAAAAMZABAAAgiYEMAAAASQxkAAAASGIgAwAAQBIDGQAAAJIYyAAAAJDEQAYAAIAkBjIAAAAkMZABAAAgiYEMAAAASQxkAAAASGIgAwAAQJLkD4M13aMppZxXAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x300 with 8 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots(1, 5, figsize=(12, 3))\n",
    "\n",
    "plt.sca(axs[0])\n",
    "ax = sns.heatmap(A, cmap='RdBu_r', vmax=all_max, vmin=all_min,\n",
    "                 cbar_kws={\"orientation\": \"horizontal\"},\n",
    "                 yticklabels=np.arange(1, n+1), xticklabels=np.arange(1, n+1),\n",
    "                 annot=True, fmt=\".2f\")\n",
    "ax.set_aspect(\"equal\")\n",
    "plt.title('$A$')\n",
    "plt.yticks(rotation=0)\n",
    "\n",
    "plt.sca(axs[1])\n",
    "plt.title('$@$')\n",
    "plt.axis('off')\n",
    "\n",
    "plt.sca(axs[2])\n",
    "ax = sns.heatmap(A_inverse, cmap='RdBu_r', vmax=all_max, vmin=all_min,\n",
    "                 cbar_kws={\"orientation\": \"horizontal\"},\n",
    "                 yticklabels=np.arange(1, n+1), xticklabels=np.arange(1, n+1),\n",
    "                 annot=True, fmt=\".2f\")\n",
    "ax.set_aspect(\"equal\")\n",
    "plt.title('$A^{-1}$')\n",
    "plt.yticks(rotation=0)\n",
    "\n",
    "plt.sca(axs[3])\n",
    "plt.title('$=$')\n",
    "plt.axis('off')\n",
    "\n",
    "plt.sca(axs[4])\n",
    "ax = sns.heatmap(A @ A_inverse, cmap='RdBu_r', vmax=all_max, vmin=all_min,\n",
    "                 cbar_kws={\"orientation\": \"horizontal\"},\n",
    "                 yticklabels=np.arange(1, n+1), xticklabels=np.arange(1, n+1),\n",
    "                 annot=True, fmt=\".2f\")\n",
    "ax.set_aspect(\"equal\")\n",
    "plt.title('$I$')\n",
    "plt.yticks(rotation=0)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
